C++ 如何初始化结构中的二维向量?
我需要一个包含2D向量的结构C++ 如何初始化结构中的二维向量?,c++,C++,我需要一个包含2D向量的结构 struct state { vector<vector<int> > p(3,vector<int>(3)); }; state *puzzle; struct状态 { 向量p(3,向量(3)); }; 国家*难题; 但我得到了以下错误: 9 25 C:\Users\Nikita\Documents\AI_8square\u heuristic1.cpp[错误]应在数值常量前加上“,”或“…” 有人能告诉我如何初始化
struct state
{
vector<vector<int> > p(3,vector<int>(3));
};
state *puzzle;
struct状态
{
向量p(3,向量(3));
};
国家*难题;
但我得到了以下错误:
9 25 C:\Users\Nikita\Documents\AI_8square\u heuristic1.cpp[错误]应在数值常量前加上“,”或“…”
有人能告诉我如何初始化向量吗?
谢谢。您只需创建一个默认构造函数,然后使用初始化向量:
#include <vector>
struct state
{
std::vector<std::vector<int> > p;
state() : p(3,std::vector<int>(3)) {}
};
#包括
结构状态
{
std::向量p;
state():p(3,std::vector(3)){}
};
也可以通过用大括号替换括号来进行初始化,例如:
struct state
{
vector<vector<int>> p{3,vector<int>(3)};
};
但是,
类型首先提供了自动内存管理,因此无需首先声明指针<代码>提供了一个智能指针,用于在实例超出范围时处理释放。因此,除非您有强制使用指针的要求,否则只需将stat
的一个实例声明为puzzle,例如:
#include <iostream>
#include <vector>
using namespace std;
struct state
{
vector<vector<int>> p{3,vector<int>(3)};
};
int main(void)
{
state puzzle;
for (auto& i : puzzle.p) /* fill vectors */
for (auto& j : i)
cin >> j;
for (auto& i : puzzle.p) { /* display values */
for (auto& j : i)
cout << " " << j;
cout << '\n';
}
}
示例使用/输出
$ ./bin/vect2dinit_cin <dat/2dvals.txt
7 5 16
2 4 6
3 8 9
$。/bin/vect2dinit\u您需要代码>课后声明我为此道歉…但这并不是问题所在..我仍然得到了错误,你可以试试vector p{3,vector(3)}代码>它仍然不工作:(它必须。什么编译器和版本?谢谢!!虽然我现在没有收到任何错误…但是接受值是否正确:for(int I=0;I puzzle->p[I][j]}??因为它不工作。它只是停止工作…抱歉,如果这一切听起来很愚蠢,但我不知道它为什么不工作:(这是一个不同的问题,超出了如何初始化向量的范围。给出的答案中的向量已经初始化,现在您正在尝试使用它。请在向量初始化后打开一个关于您的用法的不同问题。哦,好的!谢谢您的帮助!Thaaank you sooo more!!!这是准确的这就是我一直在寻找的!!我真的很感谢你的帮助!!谢谢你:D:D!!当然,很高兴能帮上忙。我知道这一定是过程中的一小部分。祝你编码顺利:)
$ cat dat/2dvals.txt
7 5 16
2 4 6
3 8 9
$ ./bin/vect2dinit_cin <dat/2dvals.txt
7 5 16
2 4 6
3 8 9