STL中的序列式容器的特性

2023-04-12


STL中的序列式容器主要有vector、deque(双端队列)、list


1、vector



代码如下:


/*
 * vector_2.cpp
 *
 *  Created on: 2013年8月6日
 *      Author: Administrator
 *      为了能有章泽天这样的女朋友。。。。。
 */


#include 
#include 

using namespace std;

template 
void print(T b , T e,char c = ' '){
	while(b!=e){
		cout<<*b++< vd,vv;

	for(int i = 0 ; i < 9 ; ++i ){
		vd.push_back(i+0.1);
		cout<<&*vd.begin()<<':';
		//capacity():返回vector的当前容量
		//size():返回vector已经使用的容量
		cout<



结果如下:


0x371040:1/1
0x3710a8:2/2
0x3710c0:3/4
0x3710c0:4/4
0x3710e8:5/8
0x3710e8:6/8
0x3710e8:7/8
0x3710e8:8/8
0x371130:9/16
-------------------------------
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9
0.1 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 1.30741e+079 
0.1 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 异常: vector::_M_range_check
类型: St12out_of_range




2、deque




代码如下:


/*
 * deque_1.cpp
 *
 *  Created on: 2013年8月6日
 *      Author: Administrator
 */

#include 
#include 
using namespace std;

template 
void print(T b , T e,char c = ' '){
	while( b!= e){
		cout<<*b++< dc;

	dc.push_back(97);dc.push_back('c');
	dc.push_front('s');dc.push_front('d');
	dc.push_back('k');dc.push_front('$');
	print(dc.begin(),dc.end());

	dc[1] = 't';
	for(int i = 0 ; i < dc.size() ; ++i ){
		cout<


结果如下:


$ d s a c k 
$,t,s,a,c,k,
t s a c



3、list




代码如下:


/*
 * list_1.cpp
 *
 *  Created on: 2013年8月6日
 *      Author: Administrator
 */

#include 
#include 
#include 

using namespace std;

template 
void print(T b , T e,char c = ' '){
	while(b != e){
		cout<<*b++< li(a,a+10):定义一个list类型的对象li,并进行初始化
	list li(a,a+10),lili(b,b+6);
	print(li.begin(),li.end());

	//unque() : 去除相邻的重复数据
	li.unique();
	print(li.begin(),li.end());

	//sort() :默认从小到大进行排序
	li.sort();
	print(li.begin(),li.end());

	li.unique();
	print(li.begin(),li.end());

	//reverse() :倒叙
	li.reverse();
	print(li.begin(),li.end());

	//list1.splice(pos,list2) :将list2中的元素一道list1中的pos位置上
	li.splice(li.begin(),lili);
	print(li.begin(),li.end());

	//assert() :断言
	assert(lili.empty());

	//remove(n) : 删除所有值为n的元素
	li.remove(5);
	print(li.begin(),li.end());

	li.sort();
	li.unique();
	print(li.begin(),li.end());

	lili.push_back(0);
	lili.push_back(4);
	lili.push_back(7);
	lili.push_back(5);
	lili.push_back(10);
	lili.sort();
	print(lili.begin(),lili.end());

	//l1.merge(l2) :将l2归并到l1中。(l1、l2必须是有序的)
	li.merge(lili);
	print(li.begin(),li.end());

	lili.assign(b,b+6);
	print(lili.begin(),lili.end());

	//sort(greater()) :从小到大进行排序
	lili.sort(greater());
	print(lili.begin(),lili.end());

	//sort(compare) :按照自定义的规则进行排序.
	lili.sort(compare);
	print(lili.begin(),lili.end());

}


结果如下:


3 8 8 8 5 5 1 8 8 7 
3 8 5 1 8 7 
1 3 5 7 8 8 
1 3 5 7 8 
8 7 5 3 1 
9 3 5 2 7 6 8 7 5 3 1 
9 3 2 7 6 8 7 3 1 
1 2 3 6 7 8 9 
0 4 5 7 10 
0 1 2 3 4 5 6 7 7 8 9 10 
9 3 5 2 7 6 
9 7 6 5 3 2 
9 6 3 7 5 2




本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com