我需要创建一个结构体来存储一个包含4个整数向量的std::vector<std::vector<int>>
。我尝试使用通常用于向量的声明:
struct myStruct{
std::vector<std::vector<int>> myVector(4);
};
但是,当我编译时,出现了这个错误:
myProgram.cpp:79:52: error: expected identifier before numeric constant
std::vector<std::vector<int>> myVector(4);
^
myProgram.cpp:79:52: error: expected ‘,’ or ‘...’ before numeric constant
我尝试在结构体中声明向量,然后以以下方式在主函数中保留4个元素:
struct myStruct{
std::vector<std::vector<int>> myVector;
};
int main(){
myStruct s;
s.myVector.reserve(4);
s.myVector[0].push_back(1);
return 0;
}
通过这种方式编译不会出错,但我一旦尝试使用push_back,就会出现分段错误。
完成此任务的适当方法是什么?为什么我不能使用第一个声明来指定myVector的大小? 谢谢! :)
reserve()
和resize()
之间的区别。就第一个声明而言,尝试将代码更新到2011年的C++标准,并使用统一的初始化语法。如果需要,获取一本更新的教材来全面学习它。 - Sam Varshavchikstd::vector<std::vector<int>> myVector{ 4 };
如果编译不通过,那么你的工具链需要设置为使用更高版本的语言标准。 - WhozCraig