顺序容器

顺序容器

1.容器元素的初始化

1.1将一个容器初始化为另一个容器的副本

将一个容器复制给另一个容器时,类型必须匹配:容器类型元素类型都必须相同。
如:
vector<int> ivec;
list<int> ilist(ivec);//错误:元素类型相同,容器类型不同
vector<double> dvec(ivec);//错误:容器类型相同,元素类型不同

1.2初始化为一段元素的副本

不能将一种容器内的元素复制给另一种容器,但可以通过迭代器实现该功能。使用迭代器时,不要求容器类型相同;容器内的元素类型也可以不同,只要它们相互兼容即可。
重要的是可以实现复制其他容器的一个子序列。
<span style="white-space:pre">	</span>vector<string> svec(3, "test");
	list<string> slist(svec.begin(), svec.end());//不同类型容器间的复制(元素类型相同或者兼容)
	vector<string>::iterator mid = svec.begin() + svec.size()/2;
	deque<string> front(svec.begin(), mid);<span style="font-family: Arial, Helvetica, sans-serif;">//不同类型容器间的复制</span><span style="font-family: Arial, Helvetica, sans-serif;">(元素类型相同或者兼容)</span>
	deque<string> back(mid, svec.end());<span style="font-family: Arial, Helvetica, sans-serif;">//不同类型容器间的复制</span><span style="font-family: Arial, Helvetica, sans-serif;">(元素类型相同或者兼容)</span>
因此可以通过内置数组中的一对指针初始化容器:
<span style="white-space:pre">	</span>char* words[] = {"stately", "plump", "buck", "mulligan"};
	size_t words_size = sizeof(words)/sizeof(char*);
	list<string> slist(words, words+words_size);

1.3分配和初始化指定数目的元素‘

<span style="white-space:pre">	</span>const list<int>::size_type list_size = 16;
	list<string> slit(list_size, "init");//指定容器大小和初始化值
	list<string> slist2(list_size);//只指定大小
接收指定大小作形参的构造函数只适用于顺序容器,关联容器不支持这种初始化。

2.迭代器和迭代器范围

关系操作符只适用于vector和deque容器。
        iter + n;
	iter - n;
	iter1 += iter2;
	iter1 -= iter2;
	iter2 - iter2;
<span style="white-space:pre">	</span>> < >= <=


list<int> ilist;
list<int>::iterator mid = ilist.begin() + ilist.size()/2;//错误,list迭代器不支持关系操作。





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值