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)







0 0
原创粉丝点击