C++ STC常用容器list vector map总结

一:list

#include <list>

list 是一个双向链表,可以高效的进行插入和删除操作;但是由于是链表,所以进行固定某一位置的访问时效率会比较低。

而且由于它的空间是不连续的,所以不支持用下标去随机访问。(特点和vector正好相反)

二:vector

#include <vector>

vector是一个动态数组,由于是数组,所以他的插入和删除操作都会导致其他数据的位置移动,所以插入和删除没有list高效。

但是他对固定位置的数据访问就比list高效很多。他比list多了vector::at()函数,可以让用户直接去访问某个位置的指,也支持直接像c语言一样用数组下标去访问。

关于list和vector的选择,如果是有对某个位置有固定访问的场景,比如房间号、电梯楼层,可以选择用vector;其他用不到固定位置访问的,可以用list,比如数据的缓存,需要快速的插入和取出。

函数

表述

c.assign(beg,end)

c.assign(n,elem)

将[beg; end)区间中的数据赋值给c。

将n个elem的拷贝赋值给c。

c.at(idx)

传回索引idx所指的数据,如果idx越界,抛出out_of_range。

c.back()

传回最后一个数据,不检查这个数据是否存在。

c.begin()

传回迭代器重的可一个数据。

c.capacity()

返回容器中数据个数。

c.clear()

移除容器中所有数据。

c.empty()

判断容器是否为空。

c.end()

指向迭代器中的最后一个数据地址。

c.erase(pos)

c.erase(beg,end)

删除pos位置的数据,传回下一个数据的位置。

删除[beg,end)区间的数据,传回下一个数据的位置。

c.front()

传回第一个数据。

get_allocator

使用构造函数返回一个拷贝。

c.insert(pos,elem)

c.insert(pos,n,elem)

c.insert(pos,beg,end)

在pos位置插入一个elem拷贝,传回新数据位置。

在pos位置插入n个elem数据。无返回值。

在pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()

返回容器中最大数据的数量。

c.pop_back()

删除最后一个数据。

c.push_back(elem)

在尾部加入一个数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值