C++Primer 5th Chap9 Sequential Container(未完)

vector 可变大小数组,支持快速随机访问(在除了尾部之外部分插入删除元素很慢)
deque 双端队列,支持快速随机访问(在头尾插入删除元素很快)
list 双向链表,仅支持双向顺序访问(在任何位置插入删除元素都很快)
forward_list 单向链表,仅支持单向顺序访问(在任何位置插入删除元素都很快)
array         固定大小数组,支持快速随机访问,不能插入删除元素
string 仅支持保存字符的类似vector容器

tips:通常使用vector是最好的选择,当然如有必要也可选择其他容器

    如果不确定使用哪种容器,可以只使用vector和list公共的操作:iterator,无下标,避免随机访问

iterator

  注意:forward_list不支持递减运算符(--)

  vector和string的迭代器运算同样支持deque和array

  如果begin==end,范围为空(否则范围内至少有一个元素,若干次递增begin可以使得begin==end)

容器类型成员:(详情见Chap16)

  需要元素类型,使用容器的value_type

  需要元素类型的一个引用,使用reference或const_reference

  例如: list<string>::iterator iter;

      vector<int>::difference_type count;

begin和end成员:

  //显式指定类型  list<string>::iterator it3=a.begin();

  //c++11  auto it2=a.begin();或auto it4=a.cbegin();(it4 是const_iterator)

原文地址:https://www.cnblogs.com/hfut-freshguy/p/11518911.html

时间: 2024-11-02 13:58:12

C++Primer 5th Chap9 Sequential Container(未完)的相关文章

C++Primer 5th Chap10 Generic Algorithms(未完)

大多数算法定义在头文件algorithm中,在头文件numeric中定义了数值泛型算法. 以find算法为例:在容器的两个迭代器指定的范围内遍历,查找特定值. 1 int val=44; 2 auto result=find(ivec.begin(),ivec.end(),val); 3 cout<<result<<endl; 迭代器令算法不依赖于容器,但算法依赖于元素类型的操作 算法不执行容器的操作,只会执行迭代器的操作 只读算法: 只会读取其范围之内的元素而不会改变元素 除了f

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

C++Primer 5th 练习 12.19

这阵子真是太忙了, 连续做了四个课设. 当然这并不能作为好久没写博客的借口, 没写博客的主要原因只有一个: 懒. 最近又开始回顾C++的语法与特性(据说C++就是一门需要反复回顾的语言),以及学习C++的编程规范. 敲了C++Primer 5th 上的一道典型的练习题,纪念一下这即将过去的2016. 题目描述: 定义你自己版本的 StrBlobPtr, 更新 StrBlob类, 加入恰当的 friend 声明及begin 和 end 成员. 这道题目主要是练习 智能指针 share_ptr 和

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

细菌觅食优化算法:理论基础,分析,以及应用(未完)

原作者:Swagatam Das,Arijit Biswas,Sambarta Dasgupta,和Ajith Abraham  [摘 要]细菌觅食优化算法(Bacterial foraging optimization algorithm[BFOA])已经被分布式优化和控制的同行们当作一种全局性的优化算法接受.BFOA是由大肠杆菌的群体觅食行为所启发而总结出来 的.BFOA已经吸引了足够多的研究者的注意,由于它出现在解决真实世界中一些应用领域上优化问题的高效性.E.coli 的群体策略的生物基

c++ primer 5th 笔记:第九章

第九章:顺序容器 笔记 1. 一个容器就是一些特定类型对象的集合.顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力. 2. 容器分为有序容器和无序容器:访问分为顺序访问和随机访问. 3. forward_list和array是新C++标准增加的类型.与内置数组相比,array是一种更安全.更容易使用的数组类型.与内置数组类似,array对象的大小是固定的. 4. 通常,使用vector是最好的选择,除非你有很好的理由选择其他容器. 5. 容器操作中类

Linux设备驱动开发学习(2):Linux设备驱动简介(未完)

(未完待续......)

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序