gpt4 book ai didi

c++ - 在声明期间将值初始化为二维 vector

转载 作者:太空狗 更新时间:2023-10-29 20:45:56 24 4
gpt4 key购买 nike

我已经这样声明了我的二维数组。但因此出现错误

vector <vector <int> > plain(vector <int>(4,0))  = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};


rijndael.cpp:12:51: error: expected ‘,’ or ‘;’ before ‘=’ token
rijndael.cpp:57:1: error: expected ‘}’ at end of input

所有前面的分号都已正确分配。你能告诉我这个声明哪里出了问题吗?

我删除了构造函数调用,现在我的声明是

vector <vector <int> > plain/*(vector <int>(4,0))*/  = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};

但是现在的错误是

rijndael.cpp:15:19: error: in C++98 ‘plain’ must be initialized by constructor, not by ‘{...}’
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
rijndael.cpp:15:19: error: could not convert ‘{{23, 43, 45, 56}, {67, 85, 13, 59}, {48, 23, 9, 57}, {24, 52, 90, 12}}’ to ‘std::vector<std::vector<int> >’

我该如何纠正这个问题?非常感谢任何帮助。

最佳答案

你不能同时一个构造函数调用一个列表初始化,坚持一个,例如:

vector<vector<int>> plain{{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};

(你可以省略列表初始化的=。)

关于您的编辑:好吧,错误说明了一切,阅读它会有所帮助。列表初始化需要 C++11 模式。如果你不想这样,你必须用 ctor 复制以准备 2D 数组,然后在构建后填充它。

关于c++ - 在声明期间将值初始化为二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9322970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com