[关闭]
@songying 2018-12-17T13:08:07.000000Z 字数 1428 阅读 967

STL容器: Lists

STL


特性

  • 采用双向链表管理元素
  • 不支持随即存取,很慢
  • 任何位置上元素插入,删除都很快,O(1)

函数操作

1. 构造函数与析沟函数

操作 说明
#inclide <list> 头文件导入
list<Elem> c 产生一个空list,其中没有任何元素
list<Elem> c1(c2) 产生另一个同类型list的副本(元素拷贝)
list<Elem> c(n) 利用元素的default 构造函数生成大小为n的 list
list<Elem> c(n,elem) 产生一个大小为n的list, 每个元素值都是elem
list<Elem> c(beg, end) 产生一个list, 以区间[begin;end] 作为元素初值
c.~list<Elem> () 销毁所有元素,并释放内存
c1 = {val1, val2,...} 初始化赋值
c1{val1, val2,...} 初始化赋值

2. 不变操作

函数 说明
c.size() 返回当前的元素数量
c.empty() 判断list是否为空,等价于size()==0,但可能更快
c.max_size() 返回可容纳的元素最大数量

3. 操作符相关

函数 说明
c1 == c2 判断c1是否等于c2,当且仅当它们元素数量且对应位置上的元素值也相同
c1 != c2
c1 < c2 以字典顺序进行比较
c1 > c2
c1 <= c2
c1 >= c2

4. 赋值操作

函数 说明
c1 = c2 将c2的全部元素赋值给c1
c.assign(n, elem) 将n个elem的copy 赋值给c
c.assign(beg, end) 将区间[beg;end] 内的元素赋值给c
c1.swap(c2) 将c1和c2 的元素互换
swap() 将c1和c2 的元素互换, 此为全局函数

5. 元素存取

函数 说明
c.front() 返回第一个元素,不检查第一个元素是否存在
c.back() 返回最后一个元素,不检查最后一个元素是否存在

6. 迭代器相关函数

函数 说明
c.begin() 返回一个随机存取迭代器,指向第一元素
c.end() 返回一个随机存取迭代器,指向最后元素的下一位置
c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一元素
c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一位置

7. 插入,删除操作

函数 说明
c.insert(pos, elem) 在pos位置插入elem, 返回新元素位置
c.insert(pos, n, elem) 在pos位置插入n个elem,无返回值
c.insert(pos, beg, end) 在pos位置插入区间[beg;end]内的所有元素,无返回值
c.push_back(elem) 在尾部添加一个elem
c.pop_back() 移除最后一个元素,无返回值
c.push_front(elem) 在头部添加elem的副本
c.pop_front() 移除头部元素,无返回值
c.remove(val) 移除所有值为val的元素
c.remove_if(op) 移除所有“造成op(elem)结果为true"的元素
c.erase(pos) 移除pos位置上的元素,返回下一元素位置
c.erase(beg, end) 移除[beg,end]区间内的所有元素,返回下一元素位置
c.resize(num) 将大小(元素个数) 改为num。如果size()增大了,新增元素都以default构造函数产生出来
c.resize(num, elem) 将元素个数改为num,如果size()增大了,新增元素都是elem的副本
c.clear() 移除所有元素,将容器清空

8. 特殊变动操作

函数 说明
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注