初始化向量<doubles> c ++的向量

smi*_*dha 9 c++ vector

嗨我想初始化一个9号向量,其元素是大小的向量,比如说5.我想将所有元素初始化为零向量.

这种方式是否正确?

vector<double> z(5,0);

vector< vector<double> > diff(9, z);
Run Code Online (Sandbox Code Playgroud)

或者有更短的方法吗?

bdo*_*lan 12

您可以在一行中执行此操作:

vector<vector<double> > diff(9, vector<double>(5));
Run Code Online (Sandbox Code Playgroud)

您可能还想考虑使用boost :: multi_array来实现更高效的存储和访问(避免双指针间接).

  • `vector <double>(5)`就够了.只要第二个参数为"0",就不需要`vector <double>(5,0)`. (2认同)

Ker*_* SB 5

你可以把它全部放在一行:

vector<vector<double>> diff(9, vector<double>(5));
Run Code Online (Sandbox Code Playgroud)

这避免了未使用的局部变量.

(在C++之前的11个编译器中,你需要留一个空格,> >.)

  • @ Stargazer712那些编译器不再符合!:P (3认同)
  • @ R.MartinhoFernandes,符合与否,他们存在:) (2认同)

Mar*_*k B 5

vector< vector<double> > diff(9, std::vector<double>(5, 0));

但是,在编译时已知大小的特定情况下,您可以使用C数组:

double diff[9][5] = { { 0 } };