list
来源:互联网 发布:java怎么发音 编辑:程序博客网 时间:2024/05/16 01:50
这是一篇读书笔记:list
下面的某些操作,有一些编译器不支持;
使用时所要包含头文件:
#include<list>
using std::list
初始化list对象的方法:
list<T>v1 v1是一个空list,他潜在的元素是T类型的,执行默认初始化
list<T>v2(v1) v2中包含有v1所有元素副本
list<T>v2 = v1 等价于v2(v1),v2中包含有v1所有元素的副本
list<T>v3(n, val) v3包含了n个重复元素,每个元素的值都是val
list<T>v4(n) v4包含了n个重复的执行值初始化的对象
list<T>v5{a,b,c....} v5包含了初始值个数的元素,每个元素被赋予相应的初始值
list<T>v5 = {a,b,c...} 等价于v5{a,b,c...}
list的替换操作:
seq.assign(b, e) 将seq中的元素替换为迭代器b和e所表示的范围中的元素。迭代器b和e不能指向seq中的元素
seq.assign(il) 将seq中的元素替换为初始化列表il中的元素
seq.assign(n, t) 将seq中的元素替换为n个值为t的元素
list支持的操作
v.empty() 如果v不含有任何元素,返回真,否则返回假
v1 = v2 用v2中元素的拷贝替换v1中的元素
v1 = {a, b, c....} 用列表中元素的拷贝替换v1中的元素
==, !=, < , <= , > , >= 支持的运算符
a.swap(b) 交换a和b的元素
c.begin(), c.end() 返回指向c的首元素和尾元素之后位置的迭代器
c.cbegin(), c.cend() 返回const_iterator
list的插入操作
v.push_back(t): 向v的尾端添加一个值为t的元素
v.push_front(t):在v的头部创建一个值为t的元素。返回void
c.insert(args):将args中的元素拷贝进c
c.insert(p,t): 在迭代器p指向的元素之前创建一个值为t,返回指向新添加的元素的迭代器
c.insert(p, n, t) :在迭代器p指向的元素之前插入n个值为t的元素,返回指向新添加的第一个元素的迭代器;若n=0,则返回p
c.insert(p,b, e) :将迭代器b和e指定的范围内的元素插入到迭代器p指向的元素之前。b和e不能指向c中的元素。返回指向新添加的第一个元素的迭代器,若范围为空,则返回p
c.insert(p,il):il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p指向的元素之前。返回指向新添加的第一个元素的迭代器;若列表为空则返回p
list访问元素:
c.back():返回c中尾元素的应用,若c为空,函数行为未定义
c.front() :返回c中首元素的引用,若c为空,函数行为未定义
list的删除操作:
c.erase(args):删除args指定的元素
c.clear() :删除c中的所有元素,返回void
c.pop_back() :删除c中尾元素,若c为空,则函数行为未定义。函数返回void
c.pop_front():删除c中首元素,若c为空,则函数行为未定义。函数返回void
c.erase(p) :删除迭代器p所指定的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后(off-the-end)迭代器。若p是尾后迭代器,则函数行为未定义
c.erase(b, e) :删除迭代器b和e所指定范围内的元素。返回一个指向最后一个被删元素之后元素的迭代器,若e本身就是尾后迭代器,则函数也返回尾后迭代器
list的容器大小操作:
s.size(): 返回s中元素个数
c.max_size() :c可保存的最大元素数目
c.resize(n) :调整c的大小为n个元素。若n<c.size(), 则多出的元素被丢弃。若必须添加新的元素,对新元素进行值初始化
c.resize(n, t) :调整c的大小为n个元素。任何新添加的元素都初始化为值t
c.shrink_to_fit():请将capacity()减少为与size()相同大小
c.capacity():不重新分配内存空间的话,c可以保存多少元素
c.reserve(n) :分配至少能容纳n个元素的内存空间
使用数组初始化list对象:
int int_arr[] = {0, 1, 2, 3, 4, 5, 6};
list<int> ivec(begin(int_arr), end(int_arr));
或
list<int>ivec(a, a + 7);
list优先使用成员函数代替通用算法:
lst.merge(lst2):将来自lst2的元素合并入lst。lst和lst2都必须是有序的。使用<运算符排序
lst.merge(lst2,comp):元素将从lst2中删除。在合并后,lst2变为空。并使用给定的comp比较操作
lst.remove(val):调用erase删除掉与给定值相等(==)。
lst.remove_if(pred):调用erase删除掉令一元谓词为真的每个元素
lst.reverse():反转lst中元素的顺序
lst.sort():使用<操作排序
lst.sort(comp):使用给定比较操作排序元素
lst.unique():调用erase删除同一个值的连续拷贝。使用==
lst.unique(pred):调用erase删除同一个值的连续拷贝.使用给定的二元谓词
lst.splice(args)
- List
- list
- List
- LIST
- list
- list
- List
- list
- list
- List
- list
- LIST
- List
- List
- List
- list
- list
- list
- Leetcode Maximum Subarray
- android按钮被点击文字颜色变化效果
- 设有n个人依围成一圈,从第1个人开始报数,数到第m个人出 列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所 有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺
- poj 1328 Radar Installation 【贪心】【区间选点问题】
- Django 1.6 基于类的通用视图
- list
- Android中调用摄像头并实现对焦拍照
- poj 2236 Wireless Network 【并查集】
- vim 全选和复制
- 二叉排序树
- hdu4771 Stealing Harry Potter's Precious 2013 Asia Hangzhou Regional Contest
- cc150:使用一个数组实现3个栈
- 仿iPhone的AssistiveTouch 悬浮辅助球工具
- “用最有效率的方法算出2乘以8等於几?”