STL标准库中的list接口
来源:互联网 发布:java.util.*是什么包 编辑:程序博客网 时间:2024/06/09 15:42
list接口
在标准STL库中list接口如下:
list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素。
使用list容器之前必须加上<vector>头文件:#include<list>;
list属于std命名域的内容,因此需要通过命名限定:using std::list;也可以直接使用全局的命名空间方式:using namespace std;
1.构造函数、拷贝构造函数
int main(){list<int> l1; //空链表list<int> l2(3); //建一个含三个默认值是的元素的链表list<int> l3(5,2); //建一个含五个元素的链表,值都是list<int> l4(l3); //建一个的copy链表list<int> l5(++l3.begin(),--l3.end()); ////c5含c1一个区域的元素[_First, _Last)。list<int>::iterator it1;//使用迭代器去遍历l1对象里的元素list<int>::iterator it2;//使用迭代器去遍历l2对象里的元素list<int>::iterator it3;//使用迭代器去遍历l3对象里的元素list<int>::iterator it4;//使用迭代器去遍历l4对象里的元素list<int>::iterator it5;//使用迭代器去遍历l5对象里的元素it1 = l1.begin();while (it1 != l1.end()){ cout << *it1 << " "; ++it1;}cout << endl;it2 = l2.begin();while (it2 != l2.end()){ cout << *it2 << " "; ++it2;}cout << endl;it3 = l3.begin();while (it3 != l3.end()){ cout << *it3 << " "; ++it3;}cout << endl;it4 = l4.begin();while (it4 != l4.end()){ cout << *it4 << " "; ++it4;}cout << endl;it5 = l5.begin();while (it5 != l5.end()){ cout << *it5 << " "; ++it5;}cout << endl;return 0;}
2.迭代器成员函数
begin() 返回指向链表第一个元素的迭代器。
end() 返回指向链表最后一个元素之后的迭代器。
c.begin() 返回指向链表第一个元素的迭代器。(c++11标准)
c.end() 返回指向链表最后一个元素之后的迭代器。(c++11标准)
it4 = l4.begin();while (it4 != l4.end()){ *it4 = 1; cout << *it4 << " "; ++it4;}cout << endl;结果显示:1>f:\程序\stl接口\stl接口\源.cpp(35): error C3892: “it4”: 不能给常量赋值
rbegin() 返回逆向链表的第一个元素,即c链表的最后一个数据。
rend() 返回逆向链表的最后一个元素的下一个位置,即c链表的第一个数据再往前的位置。
void Test1(){ list<int>l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); list<int>::reverse_iterator it = l1.rbegin(); while (it != l1.rend()) { cout << *it << " "; ++it; }}结果是:4 3 2 1。
c.rbegin() 返回逆向链表的第一个元素,即c链表的最后一个数据。(c++11)
c.rend() 返回逆向链表的最后一个元素的下一个位置,即c链表的第一个数据再往前的位置。(c++11)
类似rbegin()和rend()只不过不可赋值。
3.Capacity:关于容量的一些方法
empty(); bool empty() constsize(); size_type size() const max_size(): size_type max_size() const resize(size_type new_size, const T& x);// 新的大小并将最后一个数赋x resize(size_type new_size);//新的大小void Test2(){ list<int>l1(3); cout << l1.empty()<<endl;//判断链表空不空 cout << l1.size()<<endl;//结点的个数 cout << l1.max_size()<<endl; //返回 l1.resize(5);// 使链表变成个结点 cout << l1.size() << endl; l1.resize(6, 6);//将链表变成个值为的结点 cout << l1.size() << endl; list<int>::iterator it5; it5 = l1.begin(); while (it5 != l1.end()) { cout << *it5 << " "; ++it5; } cout << endl;}
4.element access
reference front() ;// 返回*begin() const_reference front() const ; reference back() ; //返回*(--end()) const_reference back() const ;
5.push_back pop_back push_front pop_front
void Test3(){ // push_back pop_back list<int> l4; l4.push_back(1); l4.push_back(2); l4.push_back(3); l4.push_back(4); l4.pop_back(); l4.pop_back(); l4.pop_back(); list<int>::iterator it1=l4.begin(); while (it1!=l4.end()) { cout<<*it1<<" "; ++it1; } cout<<endl; //push_front pop_front list<int> l5; l5.push_front(5); l5.push_front(6); l5.push_front(7); l5.pop_back(); l5.pop_back();list<int>::iterator it2=l5.begin(); while (it2!=l5.end()) { cout<<*it2<<" "; ++it2; } cout<<endl; }
6.insert erase clear swap
iterator insert ( iterator position, const T& x );//在position位置插入元素num。
insert(iterator position, size_type n, const T& x);// 在position位置插入n个元素num
insert ( iterator position, InputIterator first, InputIterator last );//在position位置插入区间为[first,last)的元素
iterator erase(iterator position);//删除position
iterator erase(iterator first, iterator last);//删除区间为[first,last)的元素
void Test4(){ list<int>l1; list<int>l2; list<int>l3; l1.insert(l1.begin(), 1); l2.insert(l2.begin(), 8, 2); l3.insert(l3.begin(), ++l2.begin(), --l2.end()); list<int>::iterator it1; it1 =l1.begin(); while (it1 !=l1.end()) { cout << *it1 << " "; ++it1; } cout << endl; list<int>::iterator it2; it2 = l2.begin(); while (it2 != l2.end()) { cout << *it2 << " "; ++it2; } cout << endl; list<int>::iterator it3; it3= l3.begin(); while (it3 != l3.end()) { cout << *it3 << " "; ++it3; } cout << endl; //erase l2.erase(l2.begin());l3.erase(++l3.begin(), l3.end());list<int>::iterator it4;it4= l2.begin();while (it4 != l2.end()){ cout << *it4 << " "; ++it4;}cout << endl;list<int>::iterator it5;it5= l3.begin();while (it5 != l3.end()){ cout << *it5 << " "; ++it5;}cout << endl; //clearl3.clear();list<int>::iterator it6;it6= l3.begin();while (it6 != l3.end()){ cout << *it6 << " "; ++it6;}cout << endl; //swap l1.swap(l2); list<int>::iterator it7; it7= l2.begin(); while (it7 != l2.end()) { cout << *it7 << " "; ++it7; } cout << endl; list<int>::iterator it8; it8= l1.begin(); while (it8 != l1.end()) { cout << *it8 << " "; ++it8; } cout << endl;}
7.splice
void Test5() { list<int> l1; list<int> l2; list<int> l3(l2); l1.insert(l1.begin(),5,8); l2.insert(l2.begin(),9,10); l1.splice(l1.begin(),l2); //将l2连接在l1的begin位置,释放l2 l3.splice(l1.begin(),l2,l2.begin(),l2.end());// 将l2的[begin,end)位置的元素连接到l1的begin位置并且释放l2的[begin,end)位置的元素 list<int>::iterator it1; it1 =l1.begin(); while (it1 !=l1.end()) { cout << *it1 << " "; ++it1; } cout << endl; list<int>::iterator it2; it2 = l2.begin(); while (it2 != l2.end()) { cout << *it2 << " "; ++it2; } cout << endl; list<int>::iterator it3; it3 =l1.begin(); while (it3 !=l1.end()) { cout << *it3 << " "; ++it3; } cout << endl; }
8.sort和unique
void Test6() { //sort list<int> l1; l1.push_back(1); l1.push_back(2); l1.push_back(5); l1.push_back(4); l1.push_back(5); l1.push_back(4); l1.push_back(3); l1.sort(); list<int>::iterator it1; it1 =l1.begin(); while (it1 !=l1.end()) { cout << *it1 << " "; ++it1; } cout << endl; //reverse l1.reverse(); list<int>::iterator it2; it2 = l1.begin(); while (it2 != l1.end()) { cout << *it2 << " "; ++it2; } cout << endl; //uniquel1.unique();list<int>::iterator it3;it3 = l1.begin();while (it3 != l1.end()){ cout << *it3 << " "; ++it3;}cout << endl;}9.merge
void Test7(){ //void merge(list<T, Allocator>& x); list<int>l1(2, 1); list<int>l2(2, 2); l1.merge(l2);//把l2中所有的元素都合并到l1中 list<int>::iterator it1 = l1.begin(); while (it1 != l1.end()) { cout << *it1 << " "; it1++; } cout << endl;}
10.remove
void Test8() { list<int> l1(5,1); l1.remove(1);//删除节点为1的数据 list<int>::iterator it1 = l1.begin(); while (it1 != l1.end()) { cout << *it1 << " "; it1++; } cout << endl; }
11. 运算符重载
operator==
operator!=
operator<
operator<=
operator>
operator>=
1 0
- STL标准库中的list接口
- STL库中的list的接口
- STL]标准模板库(STL)List
- 标准STL中list的各个接口的使用
- (Zz)STL 简介,标准模板库(list)
- STL标准模板库 list的使用
- STL 简介,标准模板库 list
- 标准模板库STL之list
- boost中circular_buffer库使用,接口和STL中的deque,list类似
- STL标准库中的算法函数
- 标准库STL中的map和set
- STL标准库中的算法函数
- STL标准库中的算法函数
- C++中的标准库模板STL
- STL标准库中的算法函数
- C++标准库(STL)中的容器
- STL标准库中的bitset原理解析
- 标准模板库(STL)学习指南之List容器
- 警惕:return 指向栈内存的指针
- 欢迎使用CSDN-markdown编辑器
- 手把手git教程(09)--多人协作,推送分支,抓取分支
- MFS学习笔记
- 【java】拓扑排序
- STL标准库中的list接口
- Spark SQL和DataFrames支持的数据格式
- LeetCode链表操作常见面试题汇总
- Unsupported major.minor version (jdk版本错误)解决方案
- DS1302
- jupyter安装过程错误记录
- Implement Stack using Queues
- [Freemark]freemark常用语法
- 八皇后问题