-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path08-InitializerList.cpp
More file actions
60 lines (48 loc) · 1009 Bytes
/
08-InitializerList.cpp
File metadata and controls
60 lines (48 loc) · 1009 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//08-InitializerList
#include <iostream>
#include <vector>
class C{
public:
C(std::initializer_list<int> l){
data = new int[l.size()];
std::copy(l.begin(), l.end(), data);
}
int *data;
};
template<class T, int N>
void f(T (&c)[N]){
for(int i = 0; i < N; i++)
std::cout << c[i].data[0] << " ";
std::cout << std::endl;
}
//List Traversal.
void g(std::initializer_list<int> l){
//Method 1
for(int i = 0; i < l.size(); ++i)
std::cout << l.begin()[i] << " ";
std::cout << std::endl;
//Method 2
for(auto p = l.begin(); p != l.end(); ++p)
std::cout << *p << " ";
std::cout << std::endl;
//Method 3
for(auto a: l)
std::cout << a << " ";
std::cout << std::endl;
}
int main(){
C c{1, 2, 3};
std::cout << c.data[0] << std::endl;
const std::initializer_list<int> l{0, 1, 2};
std::vector<int> v(l);
for(auto n: l)
std::cout << n << ":" << v[n] << " ";
std::cout << std::endl;
C a[3] = {
{1, 2, 3, 1, 3},
{4, 5, 6},
{7, 8, 9, 10}
};
f(a);
g({1, 2, 3, 4, 5});
}