C++笔记之list使用
list为双向链表,头文件#include<list>
1.基本操作
插入:首端、尾端、中间(通过迭代器)
查找:没有成员函数,只能通过find(ilist.begin(),ilist.end(),1),返回迭代器
删除:首端、尾端、中间(通过迭代器)
排序:成员函数ilist.sort(),默认升序
倒转:ilist.reverse(),元素倒转
判空:ilist.empty(),若为空,返回1;若不空,返回0.
清空:ilist.clear().
2.函数列表
ilist.assign() 给list赋值
ilist.begin() 返回指向第一个元素的迭代器
ilist.end() 返回末尾的迭代器
ilist.rbegin() 返回指向第一个元素的逆向迭代器
ilist.rend() 指向list末尾的逆向迭代器
ilist.clear() 删除所有元素
ilist.empty() 如果list是空的则返回true
ilist.push_back() 在list的末尾添加一个元素
ilist.push_front() 在list的头部添加一个元素
ilist.front() 返回第一个元素
ilist.pop_front() 删除第一个元素
ilist.back() 返回最后一个元素
ilist.pop_back() 删除最后一个元素
ilist.remove() 从list删除元素
ilist.remove_if() 按指定条件删除元素
ilist.get_allocator() 返回list的配置器
ilist.insert() 插入一个元素到list中
ilist.max_size() 返回list能容纳的最大元素数量
ilist.merge() 合并两个list
ilist.resize() 改变list的大小
ilist.size() 返回list中的元素个数
ilist.sort() 给list排序
ilist.reverse() 把list的元素倒转
ilist.splice() 合并两个list
ilist.swap() 交换两个list
ilist.unique() 删除list中重复的元素
3.程序示例
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
int main(){
list<int> ilist;
list<int>::iterator it;
//插入
ilist.push_back(1);//尾端插入
ilist.push_back(2);
ilist.push_back(6);
ilist.push_back(9);
ilist.push_front(3);//头部插入
ilist.push_front(4);
ilist.push_front(7);
ilist.push_front(8);
//查找
it=find(ilist.begin(),ilist.end(),1);
it=ilist.insert(it,5);//中间插入
cout<<"it位置:"<<*it<<endl;
//输出
cout<<"list大小:"<<ilist.size()<<endl;
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
//删除
cout<<"删除头元素:"<<ilist.front()<<endl;//返回头元素
ilist.pop_front(); //删除头元素
cout<<"删除尾元素:"<<ilist.back()<<endl;//返回尾元素
ilist.pop_back(); //删除尾元素
it=find(ilist.begin(),ilist.end(),3);
cout<<"删除中间元素:"<<*it<<endl;
ilist.erase(it); //删除中间的4
cout<<"删除中间元素:1"<<endl;
ilist.remove(1); //直接删除元素
cout<<"删除后list大小:"<<ilist.size()<<endl;
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
//排序
ilist.sort();//默认升序
cout<<"默认排序:";
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl;
cout<<"反向输出:";
ilist.reverse();//元素倒转
for(it=ilist.begin();it!=ilist.end();it++) cout<<*it<<' ';
cout<<endl<<endl;
/*
list<int> ilist2(ilist.rbegin(),ilist.rend());
for(it=ilist2.begin();it!=ilist2.end();it++) cout<<*it<<' ';
*/
//判空、清空
cout<<"list空吗:"<<ilist.empty()<<endl;
ilist.clear();
cout<<"list空吗:"<<ilist.empty()<<endl;
return 0;
}
运行结果:
参考