簡體   English   中英

如何填寫`std :: vector <std::vector<T> &gt;`有默認值?

[英]How to fill `std::vector<std::vector<T> >` with default values?

所以我試試這個:

std::vector< std::vector<int> > matrix(4);

matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[0][3] = 1;

matrix[1][0] = 1;
matrix[1][1] = 2;
matrix[1][2] = 3;
matrix[1][3] = 1;

matrix[2][0] = 1;
matrix[2][1] = 2;
matrix[2][2] = 3;
matrix[2][3] = 1;

matrix[3][0] = 1;
matrix[3][1] = 2;
matrix[3][2] = 3;
matrix[3][3] = 1;

但出了點問題,我的應用程序在運行時死亡=(怎么做?如何正確地將值嵌入到向量的向量中?

用這個:

std::vector< std::vector<int> > matrix(4, std::vector<int>(4));

這將使用4個std::vector<int>(4)副本初始化外部向量。

在這種情況下,您可以將Björn的方法更進一步,並使用您提供的值完全初始化2D矢量:

std::vector<int> tmp(4,0); 
tmp[0] = 1;
tmp[1] = 2;
tmp[2] = 3;
tmp[3] = 1;

std::vector< std::vector<int> > matrix(4, tmp);

人們可以簡單地把它寫成:

std::vector<int> tmp(4,1); 
tmp[1] = 2;
tmp[2] = 3;

std::vector< std::vector<int> > matrix(4, tmp);

但為了清晰起見,我常常贊成第一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM