1. 程式人生 > 實用技巧 >std::initializer_list<T>

std::initializer_list<T>

std::initializer_list<T>提供了以下介面:

size_t size() const noexcept;
const T* begin() const noexcept;
const T* end() const noexcept;

通過std::initializer_list<T>可以實現大括號初始化物件。也可以實現類似於動態型別的效果。

 1 #include <iostream>
 2 #include <initializer_list>
 3 #include <vector>
 4 
 5 using
namespace std; 6 7 class Test { 8 vector<int> list; 9 public: 10 Test(std::initializer_list<int> args) { 11 list.insert(list.end(), args.begin(), args.end()); 12 } 13 void print() { 14 for (auto &it : list) { 15 cout << it << '
'; 16 } 17 cout << endl; 18 } 19 vector<int> &get() { 20 return list; 21 } 22 }; 23 24 class TestArray { 25 vector<Test> list; 26 public: 27 TestArray(std::initializer_list<Test> args) { 28 list.insert(list.end(), args.begin(), args.end());
29 } 30 void print() { 31 for (auto &it : list) { 32 for (auto &x : it.get()) { 33 cout << x << ' '; 34 } 35 cout << endl; 36 } 37 } 38 }; 39 40 int main() 41 { 42 Test t{1, 2, 3, 4, 5, 6}; 43 t.print(); 44 TestArray t2{ {1, 2},{3},{4, 5, 6},{7, 8, 9, 10} }; 45 t2.print(); 46 int n; 47 cin >> n; 48 return 0; 49 }