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
原创粉丝点击