C++ c++;:结构内std::vector的std::vector
我需要创建一个结构,使C++ c++;:结构内std::vector的std::vector,c++,vector,struct,C++,Vector,Struct,我需要创建一个结构,使 std::vector将包含4个整数向量。 我尝试了我通常用于向量向量的声明: struct myStruct{ std::vector<std::vector<int>> myVector(4); }; struct myStruct{ std::vector myVector(4); }; 但是,当我编译时,会出现以下错误: myProgram.cpp:79:52: error: expected identifier before
std::vector
将包含4个整数向量。
我尝试了我通常用于向量向量的声明:
struct myStruct{
std::vector<std::vector<int>> myVector(4);
};
struct myStruct{
std::vector 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
myProgram.cpp:79:52:错误:数字常量前应为标识符
std::vector myVector(4);
^
myProgram.cpp:79:52:错误:数字常量前应为“,”或“…”
我尝试在结构中声明向量,然后在main()中保留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;
}
struct myStruct{
std::vector myVector;
};
int main(){
myStruct s;
s、 保护区(4);
s、 myVector[0]。向后推_(1);
返回0;
}
通过这种方式,它编译时不会出错,但我一尝试将_向后推,就会遇到分段冲突
完成这项任务的正确方法是什么?为什么我不能使用第一个声明来指定myVector的大小?
谢谢!:) 类或结构中的默认成员初始值设定项必须具有
=
标记和/或{
花括号}
std::vector<std::vector<int>> myVector{4};
struct myStruct{
std::vector myVector{4};
};
int main(){
myStruct s;
s、 myVector[0]。向后推_(1);
s、 myVector[0]。推回(2);
s、 myVector[0]。向后推_(3);
s、 myVector[0]。推回(4);
s、 myVector[1]。推回(11);
s、 myVector[1]。推回(21);
s、 myVector[1]。推回(31);
s、 myVector[1]。推回(41);
分割错误是因为您忘记了reserve()
和resize()之间的区别在第一个声明中,尝试将代码更新到2011 C++标准,并使用统一的初始化语法。如果需要的话,可以得到一本较新的教科书来学习它。^ ^ ^如果你想知道它会是什么样子,<代码> STD::向量Myvector { 4 }。
如果无法编译,则需要设置工具链以使用更高的标准语言级别。
int main(){
myStruct s;
s.myVector.resize(4);
s.myVector[0].push_back(1);
return 0;
}
struct myStruct {
std::vector<std::vector<int>> myVector{4};
};
int main() {
myStruct s;
s.myVector[0].push_back(1);
s.myVector[0].push_back(2);
s.myVector[0].push_back(3);
s.myVector[0].push_back(4);
s.myVector[1].push_back(11);
s.myVector[1].push_back(21);
s.myVector[1].push_back(31);
s.myVector[1].push_back(41);
cout << s.myVector[0][0] << " " << s.myVector[0][1] << " " << s.myVector[0][2] << " " << s.myVector[0][3] << " " << endl;
cout << s.myVector[1][0] << " " << s.myVector[1][1] << " " << s.myVector[1][2] << " " << s.myVector[1][3] << " " << endl;
return 0;
}