C ++: Что маскирует std :: vector <I>(n_col, -1);имею в виду? - PullRequest
0 голосов
/ 27 февраля 2012

Я перевожу немного кода на C ++ (я давно на это не смотрел !!). Я не уверен, что это значит:

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

Создает ли он вектор длины n_col, заполненный значением -1?

Ответы [ 5 ]

5 голосов
/ 27 февраля 2012

Создает std::vector элементов типа I длины n_col со всеми элементами, инициализированными с -1.

1 голос
/ 27 февраля 2012

Справочная документация говорит да, вы правы .Хотя конструктор принимает три аргумента, третий - Allocator - является необязательным.

1 голос
/ 27 февраля 2012

Код использует Constructor (2) из ​​ здесь и дает вам vector<I> из n_col элементов, все построенные из значения -1.

1 голос
/ 27 февраля 2012

Вы можете посмотреть здесь .

Да, он создает вектор длиной n_col с n_col повторениями I(-1).

0 голосов
/ 27 февраля 2012

Он создаст один I из -1, остальные будут скопированы из этого.

Если вы создаете тип, который имеет неявный конструктор из int, и печатает, когда этот конструктор вызывается,затем создайте вектор таким образом размером, скажем, 10, и вы увидите, что ваша печать происходит только один раз, а не 10 раз.

например

#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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...