Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;:结构内std::vector的std::vector_C++_Vector_Struct - Fatal编程技术网

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;
}