容器初始化方法

在日常的C++编码中,我们经常需要创建并初始化一个容器,因此掌握简单快捷的容器初始化或赋值的方法就显得尤为重要。本章内容是从C++标准库和C++Primer摘录比较常用的初始化和赋值方法:

1.采用初值列进行初始化,因为array在定义使要指明其大小,故该操作不是适用array;

const std::vector<int> v1 = {1,2,3,4};	   //正确
const std::array<int, 10> arr = {1,2,3,4}; //前4位被初始化,后6位为0
2.以 另一个元素的初值,完成初始化操作
std::list<std::string> li;		//初始化一个list string 
...
//采用拷贝构造
std::vector<float> c(l.begin(), l.end()); //容器不同,类型向上兼容
 
//采用移动构造
std::vector<int> c(std::make_move_iterator(l.begin()),
				   std::make_move_iterator(l.end()));
3.以某个 寻常的内置C数组完成初始化操作
int arr[] = {22,3,4,5,6};

//采用旧方法进行
std::set<int> s(arr, arr + sizeof(arr)/sizeof(arr[0));

//采用新方法std::begin()和std::end()
std::set<int> s(std::begin(), std::end());
4.以标准输入设备完成初始化动作
std::deque<int> c((std::istream_iterator<int>(std::cin)),
				  (std::istream_iterator<int)()));
5.可以 使用移动构造函数去初始化,初始化后,vi就不能被使用了
std::vector<int> v1;

//move contents of v1 into v2
std::vector<int> v2 = std::move(vi);
6.对于顺序容器(不包括array)的构造函数可以 接受大小参数
string s(10, '9');		//初始化为10个9的字符串

//对于赋值来说,需要记住顺序容器可通过assign赋值,其可也可接受大小参数
容器赋值,我们可以通过unique_copy, copy进行赋值,就可以通过assign
//采用copy算法
vector<int> vec = {1,1,2,2,3,3};
list<int> li;
unique_copy(vec.begin(), vec.end(), back_inserter(li)); //进行赋值

//采用自带的assign方法
li.assign(10, 1);  //li中含有10个1






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值