我有一个类需要存储大小可变的数组。理想情况下,这个大小应该作为类构造函数的参数来定义。
我可以定义一个常量,然后使用它来完成操作,如下所示:
#include <iostream>
#define ARRSIZE 5
class Classy{
private:
int myarray[ARRSIZE];
public:
Classy();
void printarray();
};
Classy::Classy(){
for(int i = 0; i < ARRSIZE; i++){
myarray[i] = i * i * 2;
}
}
void Classy::printarray(){
for(int i = 0; i < ARRSIZE; i++){
std::cout << myarray[i] << std::endl;
}
}
然而,我想这样做:
#include <iostream>
class Classy{
private:
int arraysize;
int myarray[arraysize];
public:
Classy(int parraysize);
void printarray();
};
Classy::Classy(int parraysize){
arraysize = parraysize;
for(int i = 0; i < arraysize; i++){
myarray[i] = i * i * 2;
}
}
void Classy::printarray(){
for(int i = 0; i < arraysize; i++){
std::cout << myarray[i] << std::endl;
}
}
编译器似乎并不喜欢我的方法,所以我正在寻找另一种做事情的方式。
我在这个问题上进行了一些搜索,但是我的搜索没有取得任何成果。我发现这个方法使用动态内存分配来完成。我想避免这种情况,所以我正在寻找一种不依赖于它的解决方案。很可能(我开始思考)这是我问题的唯一优雅的解决方案(如果是这种情况,当然应该将问题关闭为重复项)。
std::vector
。 - Captain Obvliousstd::vector
是您值得信赖的朋友,并且更有可能在满足您需求的同时灵活变通。但是您也可以使用 std::array……这是 C 数组的便捷 C++ 替代品。 - HostileFork says dont trust SEstd::array
不是可变大小的。std::unique_ptr <T[]>
是用于在构造时设置大小的数组的标准组件。std::vector<T>
用于在其生命周期内大小可以变化的数组。 - Ben Voigtnew
。先学习基础知识吧。 - user1804599