c++ primer 容器 学习记录

容器用法规范

  • vector 可变大小数组,支持快速随机访问,尾部之外插入删除集在机器上实用性不高
  • deque 双向队列,支持快速随机访问,在头尾插入和删除集效果很好
  • list 双向链表,只支持双向顺序访问,在任何位置插入和删除集效果都很好
  • forward_list 单向链表,只支持单向顺序访问,在任何位置插入和删除集效果都很好
  • array 固定大小数组,只适用于快速随机访问,没有对应的插入和删除集
  • tring 特征同vector,但专门用于保存字符
//一般用vector
//在容器中间施行插入集,则应该在输入阶段使用list,然后将内容拷贝给vector

//读取未知数量单词,总是将新单词插入末尾,删除操作在头部进行:快速随机访问、尾部插入好、头部删除好 -》 deque
//读取固定数量单词,将他们按字典顺序插入到容器中:快速随机访问、尾部插入好 -》string、vector<string>
//从文件读取未知数量的整数,将这些数排序:快速随机访问、尾部插入好\数量未知 -》vector<int>

//要求随机访问:vector,deque
//要求在容器的中间施行插入或删除集:list,forward_list
//不要求在容器的中间施行插入或删除集,要求在容器的头尾施行插入或删除集:deque
//要求读取输入流时才需要在容器中间插入元素,随后需要随机访问:由vector到sort,由list到vector

容器初始化

  1. 拷贝初始化
list<string> authors = {"Milton","Shankespeare","Austen"};
vector<const char*> articles = {"a","an","the"};
list<string> list2(authors);//正确
deque<string> author_list(authors);//错误
vector<string> words(articles);//错误
forward_list<string> words(articles.begin(),articles.end());
/*当将一个容器初始化为另一个容器的拷贝时,两个容器的容器类型和元素类型都必须相同*/
list<string> authors = {"Milton","Shankespeare","Austen"};
deque<string> auth_list(authors.begin(),authors.end());//正确,用容器的迭代器作为容器构造函数参数
  1. 列表初始化
list<string> authors = {"Milton","Shankespeare","Austen"};
  1. swap
vector<string> vec(10);
vector<string> vec2(24);
swap(vec2,vec);
  1. 容器操作集
//push_back(),除了array和forward_list之外,每个顺序容器都支持push_back()
//push_front(),list、forward_list、deque支持push_front()
//insert(iterator,object),往iterator指向的容器位置添加对象
//pop_front()和pop_back()成员函数集分别用于删除首元素和尾元素
//c.erase(p) 
//c.erase(b,e)
//c.clear()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值