• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++Primer笔记之顺序容器的使用详解

C++Primer笔记之顺序容器的使用详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++primer第五版,c++primer第六版,c++primer第四版答案,c++primer第五版答案,c++primer plus第六版等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

  顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。标准库里定义了三种类型:vector(支持快速随机访问)、list(支持快速插入、删除)、deque(双端队列)容器只定义了少量操作,大多数额外的操作由算法库提供。容器内元素的类型约束;1、元素类型必须支持赋值运算;2、元素类型的对象必须可以复制。这是容器元素类型的最低要求,如果想支持一些其他特殊要求,则必须具备相关的性质。

可以定义容器的容器vector< vector<int> > lines;//必须使用"> >"中间的空格,否则会出现变异错误

迭代器运算:

  关系操作符只适用于vector和deque容器,它们可以根据元素位置直接有效地访问指定的容器元素。而list容器的迭代器既不支持算术运算(加法或者减法),也不支持关系运算(<=,<,>=,>),它只提供前置和后置的自增、自减运算以及相等(不等)运算。

迭代器范围:

  c++使用一对迭代器标记迭代器范围,通常命名为first和last或beg和end。该范围内的元素包括迭代器first指向的元素,以及从first开始一直到迭代器last指向的位置之前的所有元素,此类元素范围称为左闭合区间[first,last)。

顺序容器的操作:

  在容器中添加元素;在容器中删除元素;设置容器大小;获取容器内的第一个和最后一个元素。对于begin()、end()、rbegin()、 rend()四个操作,均有const版本。如果容器时const,则其返回类型要加上const_前缀。c.push_back(t) 在容器c的尾部添加值为t的元素,返回void类型。c.push_front(t) 在容器c的前端添加值为t的元素,返回void类型。但是只有list和deque具有这样的性质。

关键概念:容器元素都是副本在容器中添加元素时,系统是将元素值复制到容器里。类似的,使用一段元素初始化新容器时,新容器存放的事原始元素的副本。本复制的原始值与新容器中的元素各不相干,此后,容器内元素值发生变化时,被复制的原值不会受到影响,反之亦然。

容器的比较:

  比较的容器必须具有相同的容器类型,而且其元素类型也必须相同。容器的比较式基于容器内元素的比较。两个容器具有相同的长度而且所有的元素都相等,那么这两个容器就相等。如果两个容器长度不相等,但较短的容器中所有元素都等于较长容器中对应的元素,则称较短的容器小于另一个容器。如果两个容器都是对方的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素。

  容器类型提供resize函数来改变容器所包含的元素个数。如果当前的容器长度大于新的长度值,则该容器后部的元素会被删除,如果当前的容器长度小于新的长度值,则系统会在该容器后部添加新元素。resize操作可能会使迭代器失效。例子:

  如果容器非空,那么容器类型的front和back成员将返回容器内第一个或最后一个元素的引用

  pop_front和pop_back函数用于删除容器内的第一个和最后一个元素。

  删除一个或者一段元素更通用的方法是用erase操作,有两个版本:删除由一个迭代器指向的单个元素,或删除由一对迭代器标记的一段元素。erase返回一个迭代器,它指向被删除元素或元素段后面的元素。通常,必须在容器中查找要删除的元素后,才使用erase操作。寻找一个指定元素最简单的方法,是使用标准库中的find方法。必须包含头文件algorithm.h

#include<algorithm>
list<int>::iterator searchIter= find(mylist.begin(),mylist.end(),1233);
if(searchIter!=mylist.end())//有可能找不到
{
mylist.erase(searchIter);
}

</div>
  删除容器内所有元素:mylist.clear()或者mylist.erase(mylist.begin(),mylist.end());

容器的选用:

  vector和deque容器提供了对元素的快速随机访问,但付出的代价是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除元素的开销更大。list类型在任何位置都能快速插入和删除,但付出的代价是元素的随机访问开销较大。其原因就是在内部实现的数据结构中,一个是在内存中顺序地址分批的,而另一个是在类似链表的方式,随机地址分配的,所以导致性质的不同。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ primer基础之容器insert
  • C++ Primer 第一部分基本语言
  • C++Primer笔记之顺序容器的使用详解
  • C++Primer笔记之关联容器的使用详解

相关文章

  • 2017-05-28C++ const修饰变量和修饰函数介绍
  • 2017-05-28c++中typename和class的区别介绍
  • 2017-05-28C语言设置和取得socket状态的相关函数用法
  • 2017-05-28基于C++自动化编译工具的使用详解
  • 2017-05-28举例剖析C++中引用的本质及引用作函数参数的使用
  • 2017-05-28举例讲解C语言对归并排序算法的基础使用
  • 2017-05-28C语言实现奇数阶魔方阵的方法
  • 2017-05-28C语言实现统计字符串单词数
  • 2017-05-28C++用指针变量作为函数的参数接受数组的值的问题详细总结
  • 2017-05-28详解C语言中的wait()函数和waitpid()函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 扩展KMP算法(Extend KMP)
    • C语言 数与串之间转换的方法
    • MFC控件大小随窗体大小而改变
    • C++实现一维向量旋转算法
    • 如何实现循环队列
    • 用标准c++实现string与各种类型之间的转换
    • C++中的常量定义小结
    • C++中的重载、覆盖、隐藏介绍
    • c语言strftime时间格式化示例
    • C语言中settimeofday函数和gettimeofday函数的使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有