STL 学习1

顺序容器
 
头文件 #include<vector>
       #include<list>
       #include<deque> 双端队列


 初始化:
     C c(c2) 创建容器C2的副本,c 和c2 必须具有相同的容器类型,切存放相同的类型元素






容器元素类型必须满足条件:
1 元素类型必须支持赋值运算
2 元素类型的对象必须可以赋值


除引用类型为,所有的内置类型或复合类型都可做元素类型,因引用类型不支持一般意义的赋值运算


输入输出标准库类型,其他的标准库类型都是有效的容器元素类型


如果容器储存类类型的对象时,只有当其元素类型提供默认构造函数时,容器才能使用这种构造函数:(n,t),


迭代器的运算:
list容器的迭代器不支持算数运算(加法减法) 也不支持关系运算(<=,<,>=,>),只提供前置和后置的自增,自减,以及相等,不相等运算


迭代器的范围:
first 指向容器中的第一个元素
last  执行容器中的最后一个元素的下一位置
对first反复做自增运算必须能够达到last,last绝对不能位于first之前
while(first != last)
{
   ++first;

}


#include<string>
#include<iostream>
#include <vector>
#include<list>
#include<string>
using namespace std;

void  ShowList(list<string> ls)
{
	list<string>::iterator it;
   	for( it = ls.begin();it!=ls.end();it++)
	{
		
		cout<<*it<<endl;
	}
	cout<<"************************************"<<endl;

}

int main()
{
    string str[3]= {"hello","world","12345"};
	size_t words_size = sizeof(str)/sizeof(string);//计算数组长度

	list<string> words2(str,str+words_size);
    ShowList(words2);
    //容器元素的插入
	words2.push_back("456799");//在容器尾部插入一个元素
    ShowList(words2);

	words2.push_front("front");//在容器前段添加元素,返回void类型,只适用于list和deque
	ShowList(words2);

	list<string>::iterator its = words2.insert(words2.begin(),"789");//在容器迭代器指定位置之前插入元素,返回指向新插元素的迭代器
	ShowList(words2);


	string str2[2] = {"test1","test2"};
    words2.insert(its,str2,str2+2);//在迭代器指向的位置插入一段元素
	ShowList(words2);  
    
	//访问容器中的元素

	cout<<words2.front()<<endl;//返回容器第一个元素的引用
	cout<<"************************************"<<endl;
	cout<<words2.back()<<endl;//返回容器最后一个元素的引用,对于vector和deque可通过c[n]或者c.at[n]来取得下标为n的元素的引用
	cout<<"**************************************"<<endl;
    //容器元素的删除
	list<string>::iterator  ite = words2.begin();
	
	ite = words2.erase(ite);//删除迭代器ite所指向的元素,返回一个迭代器指向被删除的元素下一个元素
	ShowList(words2);

	
	list<string>::iterator  itess = words2.begin();
     itess ++;
	 itess ++;
   
    words2.erase(ite,itess);//删除迭代器ite和ites之间的元素,返回一个迭代器指向被删除元素的后一个元素
    ShowList(words2);

	words2.clear();//删除迭代器中所有的元素

	//赋值与swap
	list<string> list2(4,"hello world");
	words2 = list2; // 赋值操作先删除做操作数中的所有的元素,然后将有操作数中的元素插入到做操作数中,回事做操作数中的所有迭代器失效
	ShowList(words2);

	words2.swap(list2);//交换内容,word2中存放list2中的元素,list2中存放word2的元素
	ShowList(words2);
	ShowList(list2);



	




 	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值