c++ container

容器:特定对象的集合
顺序容器:单一元素的集合,根据位置存储和访问对象


三种顺序容器:
vector deque list
快速随机访问 双端队列 快速插入、删除


初始化
Container<T> c
Container<T> c(n)
Container<T> c(ita, itb)
Container<T> c(n, x) 要求顺序容器
Container<T> c(anoc)
元素必须支持赋值,可以复制


::iterator it
*it
it->mem
++ --
> >= < <=,= - += -= 只适用于vector, deque


添加元素
.push_back() ok ok
none ok ok
.insert(it, x) ok ok
.insert(it, ita, itb) ok ok
.insert(it, n, x) ok ok


大小
.size() ok ok
.max_size() ok ok
.empty() ok ok
.resize(n) ok ok
.resize(n, x) ok ok


访问
[i] ok none
.at(i) ok none
.front() ok ok
.back() ok ok


删除
.erase(it++) ok ok
.erase(ita, itb)ok ok
.pop_back() ok ok
.clear() ok ok
none .pop_front() ok

赋值
c = anoc
.asign(ita, itb)
.asign(n, x)
.swap(anoc)


每次容量自增长为当前容量的3/2


vector与deque存储空间连续,支持随机访问,vector末尾插删快捷,其他位置开销大,deque首尾插删快捷
list存储空间不连续,任意位置插删开销小


顺序容器适配器:stack, queue, priority_queue
容器适配器就是利用容器提供统一的接口,隐藏背后的容器细节


stack,可以建立在vector, deque, list上
.empty() .size() .push() .pop() .top()


queue,要求提供.push_front(),建立在list上
.empty() .size() .push_back() .pop() .front() .back()
.push_front()


priority_queue,要求随机访问,建立在vector, deque上
.empty() .size() .push() .pop() .top()


#include <map>
map自动对key进行排序
map<Tone, Ttwo> m;
.size()
.max_size()
.empty()
查找
attwo = m[atone] 1)有,返回 2)无,赋默认值 若value为对象,开销较大
map<Tone, Ttwo>::iterator it = m.find(atone) if (it == m.end()) ...none


插入
m[atone] = attwo 查询,1)有,更新 2)无,插入
.insert( map<Tone, Ttwo>::value_type(atone, attwo) ) -> pair<iterator, bool>
iterator insert(iterator pos, const value_type &x);


删除
.erase(it)
.erase(ita, itb)
.clear()
.erase(const Tone &)


m::value_type , key_type, mapped_type
pair(Tone, Ttwo) apair; apair.first; apair.second;


std::for_each(m.begin(), m.end(), print_pair) print_pair是函数指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值