Инициализация std :: vector конструктором по умолчанию - PullRequest
5 голосов
/ 14 марта 2011

У меня есть поле класса, которое является std :: vector.Я знаю, сколько элементов я хочу, чтобы этот вектор содержал: N. Как я могу инициализировать вектор с N элементами?

Ответы [ 3 ]

7 голосов
/ 14 марта 2011
class myclass {
   std::vector<whatever> elements;
public:
   myclass() : elements(N) {}
};
6 голосов
/ 14 марта 2011

std::vector имеет конструктор, объявленный как:

vector(size_type N, const T& x = T());

. Вы можете использовать его для создания std::vector, содержащего N копий x.Значением по умолчанию для x является значение, инициализированное T (если T является типом класса с конструктором по умолчанию, то инициализация значения является конструкцией по умолчанию).

Проще всего инициализировать данные std::vectorчлен, использующий этот конструктор:

struct S {
    std::vector<int> x;
    S() : x(15) { }
} 
1 голос
/ 14 марта 2011

Все конструкторы, которые позволяют вам указать размер, также вызывают конструктор элемента. Если эффективность имеет первостепенное значение, вы можете использовать функцию-член reserve(), чтобы зарезервировать размер. Это на самом деле не создает никаких элементов, так что это более эффективно. Однако в большинстве случаев указание размера через векторный конструктор просто прекрасно.

...