STL中list各个接口的使用
来源:互联网 发布:8月金融数据 编辑:程序博客网 时间:2024/06/03 14:58
list是STL中的一个重要的容器,它是一个双向的循环的带头结点的链表,可以高效的进行插入删除元素。
这里来看一下他的接口们
这是C++网上的一张list的构造和方法的图↑
1.Construct list构造成员函数
void constructtest() //Construct list 构造函数;{ list<int> l1; //empty container constructor (default constructor) 构造空的链表;list<int>l2(3); //不完整参数的构造,构造三个默认为零元素的列表;list<int>l3(4,10); //fill constructor, 构造n个value, 4个10;list<int>l4(l3); // copy constructor 拷贝构造;list<int>l5(l3.begin(), l3.end()); //range constructor, 迭代器区间构造;PrintList(l1);PrintList(l2);PrintList(l3);PrintList(l4);}
2.析构函数
List destructor;
Destroys the container object. ~list用来清理销毁达到生命周期该释放的链表。
3.list& operator= (const list& x);等号操作符的重载。
4.list中迭代器生成器
void Iteratortest(list<int>&l){list<int>::iterator it1 = l.begin(); //生成一个开始位置的迭代器,head->next,可以修改list内容list<int>::iterator it2 = l.end(); //生成一个结束位置的迭代器,head,可以修改list内容list<int>::reverse_iterator it3 = l.rbegin(); //生成一个反向的开始位置的迭代器,head->prev,可以修改list内容list<int>::reverse_iterator it4 = l.rend(); //生成一个反向的结束位置的迭代器,head,也可以修改list内容list<int>::const_iterator cit1 = l.cbegin(); //生成一个const修饰的开始位置的迭代器,const修饰不可解引用修改list内容 (c++11)list<int>::const_iterator cit2 = l.cend(); //生成一个const修饰的结束位置的迭代器; (c++11)list<int>::const_reverse_iterator cit3 = l.crbegin(); //生成一个const修饰的反向的开始位置的迭代器;(c++11)list<int>::const_reverse_iterator cit4 = l.crend(); //生成一个const修饰的反向的结束位置的迭代器;(c++11)}
5.Capacity 关于容量的一些方法;
void capacitytest(list<int>&l){cout << l.empty() << endl; //判断空不空cout << l.size() << endl; //返回元素个数cout << l.max_size() << endl; //返回最大元素个数l.resize(3); //resize()重新定义链表长度PrintList(l);l.resize(5, 8); //resize()重新定义链表长度为5并写入5个8PrintList(l);}
6.Modifiers:关于修改链表内容的方法:
void modifierstest(){listl1(4, 10);list l2(10, 8);cout << "l1 :"; PrintList(l1);cout << "l2:"; PrintList(l2);cout << "assign test" << endl;l2.assign(++l1.begin(), --l1.end()); //void assign ( InputIterator first, InputIterator last );参数直接给成迭代器类型的,赋值的是一段区间 。l1.assign(7, 4); //void assign ( size_type n, const T& u );参数给n个val。cout << "l1 :"; PrintList(l1);cout << "l2:"; PrintList(l2);cout << "push and pop test" << endl;l1.push_back(11); //void push_back ( const T& x );尾插元素l1.push_back(22);l1.push_front(2); //void push_front ( const T& x );前插元素l1.push_front(1);cout << "l1 :"; PrintList(l1);l1.pop_back(); //void pop_back();尾删元素l1.pop_back();l1.pop_front(); //void pop_front();前删元素l1.pop_front();cout << "l1 :"; PrintList(l1);cout << "insert test" << endl;l1.insert(l1.begin(), 1); //iterator insert (iterator position, const T& val);迭代器位置插入一个value;cout << "l1: "; PrintList(l1);l1.insert(l1.begin(), 3, 1); // void insert(iterator position, size_type n, const T& val);迭代器位置插入n个value;cout << "l1: "; PrintList(l1);l1.insert(l1.begin(), l2.begin(), l2.end()); ////void insert ( iterator position, InputIterator first, InputIterator last );迭代器位置插入一个迭代器区间;cout << "l1: "; PrintList(l1);cout << "erase test" << endl;cout << "l1: "; PrintList(l1);//iterator erase(iterator position); 迭代器位置删除一个元素l1.erase(l1.begin());cout << "l1: "; PrintList(l1);//iterator erase(iterator first, iterator last);迭代器区间删除一堆元素l1.erase(++l1.begin(), --l1.end());cout << "l1: "; PrintList(l1);cout << "swap test" << endl;cout << "l1: "; PrintList(l1); cout << "l2: "; PrintList(l2);l1.swap(l2); //交换两个listcout << "l1: "; PrintList(l1);cout << "l2: "; PrintList(l2);cout << "clear test" << endl;cout << "l2: "; PrintList(l2);l2.clear(); //清除整个listcout << "l2: "; PrintList(l2);}
7.operations:关于list的一些操作
void operationstest(){listl1(4, 10);list l2(10, 8);cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);cout << "remove test" << endl;l1.insert(++l1.begin(), 3, 3);cout << "l1: "; PrintList(l1);l1.remove(3); //void remove ( const T& value ); 删除所有的3cout << "l1: "; PrintList(l1);cout << "remove_if test" << endl; //删除满足要求的元素 bool lessthanfive(const int& x){return x<5;}所有小于5的被删了l1.insert(++l1.begin(), 3, 3);cout << "l1: "; PrintList(l1);l1.remove_if(lessthanfive);cout << "l1: "; PrintList(l1);cout << "unique" << endl;//void unique();//删除重复的元素只保留一份(连续重复的元素删除,与sort一起使用效果更佳)l1.insert(++l1.begin(), 3, 3);cout << "l1: "; PrintList(l1);l1.unique();cout << "l1: "; PrintList(l1);cout << "sort test" << endl; l1.push_back(30);l1.push_back(1);l1.push_back(2);l1.sort(); //空参数默认降序l1.sort(bigthan); // 重载了升降序template void sort ( Compare comp )涉及到仿函数来决定升降序。 //bool bigthan(const int&first, const int &second){return first>second;}cout << "l1 :"; PrintList(l1);cout << "splice test" << endl;l1.splice(++l1.begin(), l2); //void splice(iterator position, list & x);将l2中的元素剪切到l1中pos位置开始的迭代器后面cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);l1.assign(3, 5);l2.assign(5, 4);l2.push_front(2);l2.push_front(1);cout << endl;cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);l1.splice(++l1.begin(), l2,++l2.begin()); //void splice(iterator position, list & x, iterator i);将l2中从所给迭代器i位置剪切到l1中cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);//void splice(iterator position, list & x, iterator first, iterator last);l1.splice(++l1.begin(), l2, ++l2.begin(), l2.end()); //将l2中从迭代器first到last区间内的元素剪切到l1中;cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);cout << "merge test" << endl;l1.sort(); l2.sort();l1.merge(l2); //void merge(list & x);合并两个list并默认/*注意:1)merge()是将两个有序的链表合并成另一个有序的链表,如果有一个链表不是有序的那么在执行代码时会报错:说链表不是有序的。 2)还有,两个链表中的内容排序顺序与合并时采用的排序顺序必须一致,如果不一致,也会报错,说链表不是有序的。如想要降序合并两个链表,那么合并前的两个链表也必须是按降序排列的。 3)另外,当执行完merge()后,右边的链表将变为空。*/cout << "l1 :"; PrintList(l1);cout << "l2 :"; PrintList(l2);}
以上就是大部分用得到的list容器的接口的用法O(∩_∩)O~
0 0
- STL中list各个接口的使用
- 标准STL中list的各个接口的使用
- STL中list的各个接口的使用
- STL 中list的常用接口
- STL中list的使用
- STL中list的使用
- STL中list的使用:
- STL中list的使用
- STL中list的使用
- STL中list的使用
- STL中list的使用
- STL中list的使用
- STL中list的使用:
- STL中list的使用
- STL中list的使用(理论)
- STL中list的使用(理论)
- STL中list的使用(理论)
- STL 中 容器 list 的使用
- 排序算法 (一)
- 作业五
- 数据结构---队列---顺序表
- 创建模式->单例模式
- jsp 基础
- STL中list各个接口的使用
- qt安装Debugger
- idea Maven 打包jar
- C++作业5
- 作业5
- ON UPDATE CASCADE ON DELETE CASCADE
- spoj Interesting Game (数位dp+nim博弈)
- 微信公众号开发实现菜单php代码
- 什么是IPSec认证与加密?