数组intilization需要花括号

时间:2017-02-11 19:51:58

标签: arrays c++11 vector

以下代码提供错误数组 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);
}

2 个答案:

答案 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);
  }
}