首页 > 解决方案 > 将 std::array 推回 std::vector N 次的优雅方法

问题描述

以下代码将 std::array 推回 std::vector N 次。有没有更优雅和更短的方法来做到这一点?

#include <iostream>
#include <vector>
#include <array>

#include <iomanip>
#include <complex>
#include <cmath>

int main () {
  int N=10;
  std::vector< std::array<std::complex<double>,3> > v;
  v.reserve(N);
  for(int i=0;i<N;i++){
    std::array<std::complex<double>,3> el { {0.0,3.0,0.0} };
    v.push_back(el);
  }
}

标签: c++vectorpush-back

解决方案


是的,但是在构造向量时必须使用括号

std::vector< std::array<std::complex<double>,3> > v(n, {0.0,3.0,0.0});

如果使用大括号,则首选初始化列表,在这种情况下,您可能会遇到意外错误。


推荐阅读