- 变长容器STL的初始化:本质是依赖initializer_list的模板类来实现。
std::vector<int> vecArray = {2, 3, 4, 5, 6};
std::map<std::string, int> mapArray = { {"张三", 4}, {"李四", 6}, {"孙六", 7} };
- 成员:size(), begin(), end();
- 构造或成员函数初始化入参
#include "stdafx.h"
#include <initializer_list>
class CInitList
{
public:
template <typename T>
T Sum(std::initializer_list<T> &stl)
{
T sum = 0;
for (auto data : stl) sum += data;
return sum;
}
public:
CInitList() = default;
~CInitList() = default;
};
#endif /*_INITLIST_H__*/
- 调用实例
#include "stdafx.h"
#include "InitList.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
CInitList objInitList;
std::initializer_list<int> aArray = {1, 3, 5, 6, 10};
auto Data1 = objInitList.Sum(aArray);
printf("sum: %d \n", Data1);
std::initializer_list<double> vecArray1 = {1.1, 2.4, 4.5, 5.6};
auto Data2 = objInitList.Sum(vecArray1);
printf("sum1: %f \n", Data2);
return 0;
}