以下代码提供错误数组 intilization需要花括号
如果我想创建两维数组并将其添加到矢量而不是如何操作?
vector<char[4][4]> testCases;
for(double i =0;i<noOFTestCase;i++)
{
char arr[4][4];
for(int j=0;j<4;j++)
{
cin>>(arr[j]);
}
testCases.push_back(arr);
}
答案 0 :(得分:1)
向量不能将数组作为数据成员。
答案 1 :(得分:1)
正如Ramzah Rehman所说,你可以在矢量中加入限制。它们必须具有定义的复制构造函数和初始化构造函数语义。
在没有定义复制和/或初始化构造函数(和析构函数)的情况下,当向量类添加/删除或移动项时,对象中的数据将是随机的。
你可以做的是创建一个以testCases为属性的类,并编写适当的构造函数。
你可以尝试使用字符串向量的向量,因为字符串类已经实现了可复制的语义。
例如:
#include <vector>
#include <iostream>
#include <cstdlib>
using namespace std;
template<int N> class TestCase : public vector<string>
{
public:
TestCase() { resize(N); }
static const int size() { return N; }
};
typedef TestCase<4> MyTestCase;
int main()
{
vector<MyTestCase> testCases;
for(int i =0;i<noOfTestCases;i++)
{
MyTestCase arr;
for(int j=0;j< MyTestCase::size();j++)
{
std::cin>>(arr[j]);
}
testCases.push_back(arr);
}
}