【问题标题】:C++ How to dynamically create a 2D vectorC++ 如何动态创建二维向量
【发布时间】:2015-05-18 08:08:29
【问题描述】:

我正在尝试创建一个 n x n 向量,稍后我可以将其 cout 作为表/矩阵。 Xcode 指向for 循环中的= 并告诉我No viable overloaded '='。我不知道这意味着什么或如何解决它。

int n=5;
vector< vector<int> > row(n);
for (int i=0; i<n; i++) {
   row[i] = new vector<int> column(n);
}

也试过这个,但是Xcode也不喜欢,这次指向columnExpected ')'

int n=5;
vector< vector<int> > row;
for (int i=0; i<n; i++) {
   row.push_back(new vector<int> column(n));
}

我的猜测是,这与我在 for 循环中声明新向量 column 的方式有关。非常感谢任何帮助/建议。谢谢。

【问题讨论】:

    标签: c++ xcode vector 2d-vector


    【解决方案1】:

    简单的解决方案是使用相关的constructor of std::vector,将其初始化为n 元素,每个元素的值都为val - 不需要循环。

    std::vector<T> (n, val);
    

    有了你原来的 sn-p,我们最终会得到以下结果,它将初始化行以具有 n std::vectors,每个都具有 n 元素。

    std::vector<std::vector<int> > row (n, std::vector<int> (n));
    

    【讨论】:

      【解决方案2】:

      试试下面的

      int n = 5;
      std::vector< std::vector<int> > row(n);
      for (int i=0; i<n; i++) {
         row[i].push_back( std::vector<int>(n) );
      }
      

      int n = 5;
      std::vector< std::vector<int> > row(n, std::vector<int>( n ) );
      

      【讨论】:

        【解决方案3】:

        row的构造函数被调用时,所有元素也被初始化。 我认为这段代码可以满足您的需求:

        for (int i=0; i<n; i++) {
            row[i].resize(n);
        }
        

        现在行的所有元素的大小都是n

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 2011-08-11
          • 2015-07-15
          • 1970-01-01
          • 2020-05-05
          • 1970-01-01
          • 2020-05-20
          相关资源
          最近更新 更多