Java 如何在C++;?
我想在类中声明一个2D数组。数组的大小将在构造函数中初始化。在Java中,我可以按如下方式执行此操作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::
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;i STD::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我们的记忆。