1、【c++11】初值列
ContType c(initlist);
ContType c = initlist;
eg:const std::vector<int>v1{1,2,3,4,523,3246,34,42,4};
(array<>容器例外)
2、“针对某个给定区间”
依赖迭代器,大概。 以 另一容器、C-style array、标准输入 的元素为初值。构造函数是member template,元素类型也可以不同,但需要存在自动转换机制(我不建议自动转换,写了你至少加个注释)。
eg:
【以某一容器的元素】 std::list<int>L;std::vector<float> v(L.begin(),L.end());
【以C-style array为元素】int carray[]={1,2,3,4,5,6,7};std::set<int> c(carray,carray+sizeof(carray)/sizeof(carray[0]));
【c++11】<iterator>:std::set<int> c(std::begin(carray),std::end(carray));
【从标准输入设备】std::deque<int> c((std::istream_iterator<int>(std::cin)),(std::istream_iterator<int>()));
【c++11 move】std::list<int> L;std::vector<int>c(std::make_move_iterator(L.begin()),std::make_move_iterator(L.end()));
【c++11 move】std::vector<int>v1;std::vector<int>v2 = std::move(v1);