初始化二维 std::vector
所以,我有以下几点:
std::vector< std::vector <int> > fog;
我很天真地初始化它:
for(int i=0; i<A_NUMBER; i++)
{
std::vector <int> fogRow;
for(int j=0; j<OTHER_NUMBER; j++)
{
fogRow.push_back( 0 );
}
fog.push_back(fogRow);
}
而且感觉很不对……有没有其他的方法可以像这样初始化一个vector?
And it feels very wrong... Is there another way of initializing a vector like this?
推荐答案
使用 std::vector::vector(count, value)
接受初始大小和默认值的构造函数:
Use the std::vector::vector(count, value)
constructor that accepts an initial size and a default value:
std::vector<std::vector<int> > fog(
ROW_COUNT,
std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
如果一个非零值,例如 4
,需要作为默认值:
If a value other than zero, say 4
for example, was required to be the default then:
std::vector<std::vector<int> > fog(
ROW_COUNT,
std::vector<int>(COLUMN_COUNT, 4));
我还应该提到在 C++11 中引入了统一初始化,它允许使用 {}
初始化 vector
和其他容器:
I should also mention uniform initialization was introduced in C++11, which permits the initialization of vector
, and other containers, using {}
:
std::vector<std::vector<int> > fog { { 1, 1, 1 },
{ 2, 2, 2 } };
相关文章