Learning New C++ Standards - Initializer lists
If you have a vector and you need to fill it with some predefined data, we have to call push_back()
with those data that many times. Its so tiring like the following.
vecData.push_back(1);
vecData.push_back(2);
vecData.push_back(3);
vecData.push_back(4);
New C++ standards solved this issue by std::initializer_list<>
. Using this proxy object, standard containers can be initialized with initial values.
Eg:-
vector<int> vecData = {1,2,3,4};
or
vector<int> vecData{1,2,3,4};
If you want your own class provide this functionality to its users then you have to implement a constructor which takes std::initializer_list<T>
as parameter. Use that to populate internal data structure.
class ObjList
{
public:
ObjList(std::initializer_list<Obj> lst);
};
This object can be used like follows.
ObjList o1 = {1, 2, 4, 5};
This type of constructor is called initializer list constructor. Elements in std::initializer_list
are read only. we cannot change that in the constructor.
We can use std::initializer_list
in other places like other data types.