C ++:std :: vector <i> mask是什么(n_col,-1);意思?</i>的

时间:2012-02-27 09:49:08

标签: c++ stl

我正在翻译一些C ++代码(自从我查看任何内容以来已经很长时间了!)。我不确定这意味着什么:

std::vector<I> mask(n_col, -1);

是否正在创建一个长度为n_col的向量,其值为-1

5 个答案:

答案 0 :(得分:5)

它会创建std::vectorI长度为n_col的项目,其中所有项目都是从-1初始化的。

答案 1 :(得分:1)

你可以看here

是的,它会创建一个长度为n_coln_col重复I(-1)的向量。

答案 2 :(得分:1)

代码正在使用here中的构造函数(2),并为您提供vector<I>n_col元素,这些元素都是根据值-1构建的。

答案 3 :(得分:1)

The reference documentation says yes, you're correct
虽然构造函数有三个参数,但第三个 - 分配器 - 是可选的。

答案 4 :(得分:0)

它将从-1构造一个I,其他的都将从那个中复制。

如果您创建一个具有int的隐式构造函数的类型,并在调用该构造函数时进行打印,那么创建一个大小为10的向量,您将看到您的打印只发生一次,而不是10次。

e.g。

#include <vector>
#include <iostream>

struct Foo
{
  int m_value;
   Foo() : m_value( 0 ) {}
   Foo( int i ) : m_value( i )
   {
        std::cout << "Constructor from int\n";
   }
};

int main()
{
   std::vector<Foo> foovec( 10, -1 );
}