Initializer Lists
CSE 232 - Dr. Josh Nahum
Reading:
Section 5.2.3
Table of contents
00
01
Streams
Copy
00
Streams
read Function
Two facts to remember:
Vector read(istream & is) {
Vector v;
for (double d; is >> d; ) {
v.push_back(d);
}
return v;
}
01
Copy
Initializer-list Constructor
Vector::Vector(std::initializer_list<double> lst)
:elem{new double[lst.size()]}, sz{static_cast<int>(lst.size())} {
copy(lst.begin(), lst.end(), elem);
}
std::copy is a function from the <algorithm> library. It takes three arguments:
An example without using untaught material follows.
Initializer-list Constructor
Vector::Vector(std::initializer_list<double> lst)
:elem{new double[list.size()]}, sz{static_cast<int>(lst.size())} {
for (int i{0}; i < sz; ++i) {
elem[i] = lst[i];
}
}
Unfortunately arrays (like elem) and std::initializer_lists (like lst) don't support the at method, so we have to use the less safe operator[].