Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to initialize a vector with an explicit element initializer?

Tags:

c++

We can use the following syntax to initialize a vector.

// assume that UserType has a default constructor
vector<UserType> vecCollections; 

Now, if UserType doesn't provide a default constructor for UserType but only a constructor as follows:

explicit UserType::UserType(int i) { ... }.

How should I call this explicit element initializer with the vector constructor?

like image 457
q0987 Avatar asked Nov 30 '22 08:11

q0987


2 Answers

vector<UserType> vecCollections(10, UserType(2));
like image 109
Erik Avatar answered Dec 05 '22 05:12

Erik


Unfortunately there is no way in current C++ (C++03) to initialize the vector with arbitrary elemtnts. You can initialize it with one and the same element as in @Erik's answer.

However in C++0x you can do it. It is called an initializer_list

vector<UserType> vecCollections({UserType(1), UserType(5), UserType(10)});

Incidentally, you might want to check out the boost::assign library, which is a very syntactically convenient way to assign to a vector and other containers

like image 36
Armen Tsirunyan Avatar answered Dec 05 '22 05:12

Armen Tsirunyan