在类中初始化空数组
Initialize empty array in class
我刚刚尝试过:
class Test
{
public:
int iArray[][];
}
。这不可能吗?我必须设置一个常量值吗?
喜欢:
class Test
{
public:
const int iArray[5][4];
}
我想稍后定义 [x][y],只需在那里放置位置即可。否则它不会是"动态的",我不想使用向量,因为我希望能够通过"X"和"Y"访问值。
我认为实现这一目标的更好方法是使用指针。你可以这样做。
#include <cstdlib>
#include <iostream>
using namespace std;
class PointerTest {
private:
int** array;
int x, y;
public :
void setValue(int row, int col,int value);
int getValue(int row, int col);
PointerTest(int row, int col);
~PointerTest() {
for(int i=0;i<x;i++) {
delete array[y];
}
}
};
PointerTest::PointerTest(int row, int col) {
x=row, y=col;
for(int i=0;i<row;i++) {
*array=new int[col];
}
}
void PointerTest::setValue(int row, int col, int value) {
*(array[row])=value;
}
int PointerTest::getValue(int row, int col) {
return *(array[row]);
}
int main(int argc, char *argv[])
{
PointerTest* t=new PointerTest(4,5);
t->setValue(0,0,464);
cout<<"The value in array: "<<t->getValue(0,0)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
怎么样
tempalte <int N1, int N2> class Test
{
public:
int iArray[N1][N2];
};
?
把一个 std::vector 放在一个向量中怎么样?
std::vector< std::vector< const int > > iArray;
没有太多理由在C++中使用"普通"数组。
如果您想稍后决定int iArray[][];
大小,则可以使用 vector< vector<int> > iArray;
.
另一种方法是使用嵌套new[]
,这有点复杂。
不,这是不可能的。但是你可以在你的类中有一个指针,比如
int **ptr;
然后在构造函数中或为您的数组分配内存的位置
ptr = (int **)malloc( the size you want );
或C++中的"new[]"运算符。
但是如果你正在使用C++..最好的方法是使用:
std::vector< std::vector< int >> array;
class Test
{
public:
Test()
{
iArray = new int*[5];
for(int i = 0; i < 5; i++)
iArray[i] = new int[4];
}
~Test()
{
for(int i = 0; i < 5; i++)
delete[] iArray[i];
delete[] iArray;
}
int** iArray;
};
将允许您在运行时分配一个 2d int 数组(在本例中它是 5x4),但老实说,我会使用其他一些海报指出的向量,您无需担心之后释放内存就像使用 new 一样。
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理