Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在C++;?_Java_C++_Multidimensional Array - Fatal编程技术网

Java 如何在C++;?

Java 如何在C++;?,java,c++,multidimensional-array,Java,C++,Multidimensional Array,我想在类中声明一个2D数组。数组的大小将在构造函数中初始化。在Java中,我可以按如下方式执行此操作 public class A { public int[][] indices; A(int a,int b){ indices = new int[a][b]; } } < P> >如何在C++中执行相同的操作?< /P> < P>使用向量向量: std::vector<std::vector<squares>> squares; std::

我想在类中声明一个2D数组。数组的大小将在构造函数中初始化。在Java中,我可以按如下方式执行此操作

public class A {
  public int[][] indices;

  A(int a,int b){
     indices = new int[a][b];
  }
}

< P> >如何在C++中执行相同的操作?< /P> < P>使用向量向量:

std::vector<std::vector<squares>> squares;
std::向量平方;
并在构造函数中初始化:

squares.resize(xPos);
for (int i = 0; i < xPos; i++) {
    squares[i].resize(yPos);
}
squares.resize(xPos);
对于(int i=0;i在C++中,2D数组的一种更流行的方式是使用2D向量。这将有很多好处

  • 您还可以通过
    []
    访问元素
  • 大小是动态全涂层的-因此您始终可以通过
    myVector.push_back(vec)
    myVector[i]。push_back(x)
    来增加大小
  • 简而言之,它类似于
    Java
    中的
    ArrayList

    所以也许用一个

    #include <vector>
    public class A {
        std::vector<std::vector<int>> indices;
        //...
    }
    
    #包括
    公共A类{
    std::向量指数;
    //...
    }
    
    既然您的答案已经有了解决方案,我建议您做些不同的事情。 处理二维或多维阵列。我认为指针比向量快得多。你可以说我们应该充分利用技术。但是我建议您使用一个名为
    uBLAS
    的库,它使数组的处理变得容易。 可以找到这些文档并使用它们,就像:

    int main () {
        using namespace boost::numeric::ublas;
        matrix<double> m (3, 3);
        for (unsigned i = 0; i < m.size1 (); ++ i)
            for (unsigned j = 0; j < m.size2 (); ++ j)
                m (i, j) = 3 * i + j;
        std::cout << m << std::endl;
    }
    
    int main(){
    使用名称空间boost::numeric::ublas;
    矩阵m(3,3);
    对于(无符号i=0;iSTD::CUT

    你可以在C++类

    中声明一个原始数组
    class C {
        int** someArray;
        public: 
            C() {
                someArray = new int*[ SIZE_GOES_HERE ];
                for( unsigned int j = 0; j < SIZE_GOES_HERE; ++j )
                    someArray[ j ] = new int[ SECOND_SIZE ];
            }
    };
    
    C类{
    int**数组;
    公众:
    C(){
    someArray=newint*[SIZE\u在这里出现];
    for(无符号整数j=0;j
    以后记得管理内存
    它所做的是声明一个双指针,它将指向一个指针数组,该数组将指向创建2d数组的数组。

    使用2d向量或自定义矩阵。您是否要求索引像2d数组一样由连续内存组成,还是只希望能够像2d数组一样对它们进行索引?我不需要conti我们的记忆。