list基本用法程序举例
来源:互联网 发布:阿里云服务器ecs建站 编辑:程序博客网 时间:2024/05/22 00:29
list作为STL重要的容器之一,保存在其中的每个元素之间使用链表相连,故而访问元素没有像数组访问模式一样的vector快,但是随机插入元素却比vector快,原理和数组与链表的操作有异曲同工之妙。对每个元素分配空间,不存在空间不够而重新分配的情况。
下面就以程序的方式展示list的基本操作,包括容器构造,插入元素(包括指定位置插入多个元素),排序,首尾元素输出与输入,逆序,删除重复元素,擦除指定位置元素,逆向输出等基本操作。
建议程序运行结果和程序语言比对查看,这样对基本操作符号命令的印象更加深刻。
#include<iostream>//list用法#include<list>#include<string>#include<vector>using namespace std;int main(){ //构造函数 string temp="I love you";vector<int>temp1(10,20);list<int>test1;//构造函数 1list<float>test2(10); //构造函数2 list<string>test3(10,"I love you");//构造函数3 list<char>test4(temp.begin(),temp.end());//构造函数4 list<char>test5(test4);//复制构造函数(构造函数5) //判断是否为空操作if(test1.size()==0)cout<<"list1的size()为空"<<endl; if(test2.empty())cout<<"list2为空"<<endl;//增加元素test1.push_back(1);//向尾部追加 test1.push_front(10);//向头部添加cout<<"after push_back(1) and push_front(10):"<<endl;list<int>::iterator it=test1.begin();for(;it!=test1.end();it++)//不能用it=it+1和it+=1 cout<<*it<<"\t"; cout<<endl;cout<<"after insert(++test1.begin(),100)"<<endl;test1.insert(++test1.begin(),100);//向test1中某位置添加元素 it=test1.begin();for(;it!=test1.end();it++)cout<<*it<<"\t"; cout<<endl;cout<<"after insert(++test1.begin(),5,30)"<<endl;test1.insert(++test1.begin(),5,30);//向test1中某位置添加n个相同元素 it=test1.begin();for(;it!=test1.end();it++)cout<<*it<<"\t"; cout<<endl;cout<<"after insert(++++test1.begin(),temp1.begin(),temp.end())"<<endl;test1.insert(++++test1.begin(),temp1.begin(),temp1.end());//想test1中添加其他容器区间内的元素it=test1.begin();for(;it!=test1.end();it++)cout<<*it<<"\t"; cout<<endl;//排序cout<<"after sort:"<<endl;test1.sort(); for(it=test1.begin();it!=test1.end();it++)cout<<*it<<"\t";cout<<endl;//删除元素test1.pop_back();test1.pop_front(); cout<<"pop_back()和pop_front之后"<<endl;for(it=test1.begin();it!=test1.end();it++)cout<<*it<<"\t";cout<<endl;test1.remove(20);test1.erase(++test1.begin());test1.erase(++test1.begin(),------test1.end());//-------之后的语言没用cout<<"test1.remove(20)和两次test1.erase(++begin())之后"<<endl; for(it=test1.begin();it!=test1.end();it++)cout<<*it<<"\t";cout<<endl;//逆向输出 cout<<"逆向输出 "<<endl;list<int>::reverse_iterator it1=test1.rbegin();for(;it1!=test1.rend();it1++)cout<<*it1<<"\t";cout<<endl; //获取头元素和尾元素的引用 cout<<"front and back"<<endl;cout<<test1.front()<<endl;cout<<test1.back()<<endl;//排序cout<<"sort again:";test1.sort(); for(it=test1.begin();it!=test1.end();it++)cout<<*it<<"\t";cout<<endl;//删除重复cout<<"unique:"<<endl;test1.unique(); for(it=test1.begin();it!=test1.end();it++)cout<<*it<<"\t";cout<<endl;//反转cout<<"反转后"<<endl;test1.reverse();for(it=test1.begin();it!=test1.end();it++)//不能用it=it+1和it+=1 cout<<*it<<"\t";cout<<endl;}运行结果如下:
后续再整理其他容器的基本操作。
0 0
- list基本用法程序举例
- time_point 的基本用法举例
- awk基本用法及举例
- java 数组容器List用法举例
- list基本用法
- C# List基本用法
- POSIX线程中互斥量的基本用法举例
- awk基本用法及举例(2)
- strlen 和 sizeof 的基本用法(举例)
- android之list基本用法
- C# List<T>基本用法
- c#中List基本用法
- Java中List基本用法
- 【c++程序】list一般用法
- 程序举例
- java中list的基本用法
- python range和list基本用法
- vector和list的一些基本用法
- s3c2416启动方式
- 可持久化线段树 HDU4866 Shooting
- 三次握手
- IP数据报格式和IP地址路由(三)
- 一个好用的web甘特图
- list基本用法程序举例
- ARM存储器的大小端存储方式
- 0x3f3f3f3f...编程中无穷大常量的设置技巧
- 我们正在路上 - 从持续集成到持续发布
- 【软件工程】之软工视频初印象
- 关于codelite 无法debugging 的困境
- ABAP中如何得到一個月的最後一天
- ARM处理器的程序与数据存储(冯·诺依曼与哈佛结构)
- 9.1-数组合并