STL—— 3种顺序容器的基本功能和特性

原创 2016年05月31日 16:28:50

1.顺序容器的基本功能

         STL中的顺序容器包括向量(vector)、双端队列(deque)和列表(list)

(1)构造函数

<span style="font-size:12px;">S s(n,t);  //构造一个由n个t元素构成的容器实例s。
S s(n);    //构造一个有n个元素的容器实例s,每个元素都是T()。
S s(q1,q2);//使用将[q1,q2)区间内的数据作为s的元素构造s。</span>

(2)赋值函数

<span style="font-size:14px;">s.assign(n,t)    //赋值后的容器由n个t元素构成。
s.assign(n)      //赋值后的容器有n个元素的容器实例s,每个元素都是T()。
s.assign(q1,q2)  //赋值后的容器的元素为[q1,q2)区间内的数据。</span>

(3)元素的插入

<span style="font-size:14px;">s.insert(p1,t)     //在s容器中,p1所指向的位置插入一个新的元素t,插入后的元素夹在原p1和p1-1所指向的元素之间,该函数会返回一个迭代器指向新插入的元素。
s.insert(p1,n,t)   //在s容器中p1所指向的位置插入n个新的元素t,插入后的元素夹在原p1和p1-1所指向的元素之间,没有返回值。
s.insert(p1,q1,q2) //将[q1,q2)区间内的元素顺序插入到s容器中p1位置处,新元素夹在原p1和p1-1所指向的元素之间。</span>

(4)元素的删除

<span style="font-size:14px;">s1.erase(p1)   //删除s1容器中p1所指向的元素,返回被删除的下一个元素的迭代器。
s1.erase(p1,p2)//删除s1容器中[q1,q2)区间内的元素,返回最后一个被删除元素的下一个元素的迭代器。</span><strong style="font-size:18px;">
</strong>
(5)改变容器的大小

<span style="font-size:14px;">s1.resize(n)  //将容器的大小变为n,如果原有的元素个数大于n,则容器末尾多余的元素会被删除;如果原有的元素个数小于n,则在容器末尾会用T()填充。</span>
(6)首尾元素的直接访问

s.front()    //获得容器首元素的引用。
s.back()     //获得容器尾元素的引用。
(7)在容器尾部插入、删除元素

<span style="font-size:14px;">s.push_back(t)  //向容器尾部插入元素t。
s.pop_back()    //将容器尾部的元素删除。</span>
(8)在容器头部插入、删除元素

<span style="font-size:14px;">s.push_front(t)  //向容器头部插入元素t。
s.pop_front()    //删除容器头部的元素t。</span>


2.顺序容器特性比较

操作 向量(vector) 双端队列(deque) 列表(list)
随机访问 较慢 不能
头部插入
(push_front)
没有push_front,只能用insert
完成
快,
已有迭代器失效,已有指针、
引用不会失效
快,
已有迭代器、指针、引用
都不会失效
头部删除
(pop_front)
没有pop_front , 只能用erase
完成

只会使被删除元素的迭代器、
指针、引用失效

只会使被删除元素的迭代器、
指针、引用失效
尾部插入
(push_back)

当发生容器扩展时,会使所有已有
的迭代器、指针、引用失效,否则
不会使任何已有的迭代器、指针、
引用受到影响

已有迭代器失效,已有指针、
引用不会失效

已有迭代器、指针、引用都不
会失效
尾部删除
(pop_back)

只会使被删除元素的迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效
任意位置插入
(insert)
插入位置越接近头部越慢。
当发生容器扩展时,会使所有迭代器、
指针、引用失效,否则之后使插入位置
之后的迭代器、指针、引用失效
插入位置越接近中间越慢
会使所有迭代器、指针、
引用失效

只会使被删除元素的迭代器、指针、
引用失效
任意位置删除
(erase)
删除位置越接近头部越慢
只会使删除位置之后的迭代
器、指针、引用失效
删除位置越接近中间越慢
会使所有迭代器、指针、引用失效

只会使被删除元素的迭代器、指针、
引用失效







版权声明:本文为博主原创文章,未经博主允许不得转载。

STL之顺序容器和关联容器总结

顺序容器          Vector中所采用的数据结构非常简单:线性连续空间。当分配空间被占满而仍然需要添加元素时,vector便会进行一场空间重新配置的大工程!在这里,程序员需要注意的是,一旦...
  • lhc548453346
  • lhc548453346
  • 2016年03月07日 21:02
  • 887

STL1——顺序容器和顺序容器适配器

容器是容纳特定类型对象的集合,容器的类型分为顺序容器,容器适配器和关联容器,顺序容器将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素。...
  • u014245881
  • u014245881
  • 2015年08月30日 14:39
  • 1275

STL——顺序容器使用总结

1、顺序容器的定义
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2014年06月05日 20:14
  • 608

STL 之顺序容器

目录 顺序容器gonengn
  • haifengzhilian
  • haifengzhilian
  • 2014年04月12日 13:19
  • 1459

STL 顺序容器,关联容器

向量 vector :   是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。 在创建一个ve...
  • gavin0123
  • gavin0123
  • 2014年08月18日 15:12
  • 1159

顺序容器性能比较

本博客内容来源与C++primer以及STL源码解析。1. 顺序容器类型介绍 vector string array 上述三种都将元素保存在连续的内存中,but ...
  • u014772862
  • u014772862
  • 2016年08月06日 20:33
  • 671

STL 顺序容器基本操作 与 队列用法

关于队列的操作 详细用法: 定义一个queue的变量                       queue que 查看是否为空范例                              qu...
  • u012848631
  • u012848631
  • 2014年05月23日 20:26
  • 909

stl 容器适配器、迭代器适配器和函数适配器讲解

一、迭代器 list的迭代器不支持算术运算,也不支持关系运算符(=,>),他只提供前置和后置的自增、自减以及相等和不相等运算。list的内存不连续。 vector和deque容器的迭代器是一种类型...
  • SprintfWater
  • SprintfWater
  • 2013年04月07日 20:59
  • 1545

STL 容器简介:C++ 容器:顺序性容器、关联式容器和容器适配器

什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象...
  • szu030606
  • szu030606
  • 2013年08月30日 19:06
  • 1626

数据库主要功能 和 特点

一、功能: 1、数据定义功能:DBMS(数据库管理系统 DataBase Management System)提供了DDL(数据定义语言 Data Definition Language),用户可以...
  • AndrewShuBao
  • AndrewShuBao
  • 2012年12月28日 10:49
  • 2473
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL—— 3种顺序容器的基本功能和特性
举报原因:
原因补充:

(最多只允许输入30个字)