C++中的容器大致可以分为两个大类:顺序容器和关联容器。顺序容器中包含有顺序容器适配器。

顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素。主要有vector、list、deque(双端队列)。顺序容器适配器:stack、queue和priority_queue。

关联容器:支持通过键来高效地查找和读取元素。主要有:pair、set、map、multiset和multimap。

注意:容器类是自动申请和释放内存,不需要进行new和delete操作。

一、顺序容器

1、顺序容器定义

为了定义一个容器类型的对象,必须先包含相关的头文件:

    定义vector:  #include <vector>
定义list:   #include <list>
定义deque:   #include <deque>
4.  定义queue:   #include <queue>
5. 定义stack: #include <stack> //注意:stack和queue都是基于deque实现的,但是stack和queue比较常用

定义示例

 vector<int>vec;//定义vector,常用
list<int>lis;
deque<int>deq;
4 stack<int>sta;//定义栈,常用
5 queue<int>que;//定义栈,常用

2、顺序容器初始化

函数模板 意义

C<T> c;

创建一个名为c的空容器。C是容器类型名,如vector,T是元素类型,如int或

string适用于所有容器。

C c(c2);

创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。

C c(b,e);

创建c,其元素是迭代器b和e标示的范围内元素的副本。

适用于所有容器。

C c(n,t);

用n个值为t的元素创建容器c,其中值t必须是容器类型C的元素类型的值,或者是可转换为该类型的值。

只适用于顺序容器

C c(n);

创建有 n 个值初始化元素的容器 c。

只适用于顺序容器

 3.vrctor容器的操作

 //vector的定义
vector 创建一个空的vector。
vector c1(c2) 复制一个vector
vector c(n) 创建一个vector,含有n个数据,数据均已缺省构造产生
vector c(n, elem)    创建一个含有n个elem拷贝的vector
vector c(beg,end) 创建一个含有n个elem拷贝的vector //vector的操作
c.assign(beg,end) 将[beg; end)区间中的数据赋值给c。
c.assign(n,elem)     将n个elem的拷贝赋值给c。 
c.at(idx)         传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back() 传回最后一个数据,不检查这个数据是否存在。
c.begin()        传回迭代器中的第一个数据地址。
c.capacity()        返回容器中数据个数。
c.clear()        移除容器中所有数据。
c.empty()        判断容器是否为空。
c.end()        指向迭代器中末端元素的下一个,指向一个不存在元素。
c.erase(pos)        删除pos位置的数据,传回下一个数据的位置。
c.erase(beg,end)      删除[beg,end)区间的数据,传回下一个数据的位置。
c.front()        传回第一个数据。
get_allocator       使用构造函数返回一个拷贝。
c.insert(pos,elem)    在pos位置插入一个elem拷贝,传回新数据位置。
c.insert(pos,n,elem)   在pos位置插入n个elem数据。无返回值。
c.insert(pos,beg,end)   在pos位置插入在[beg,end)区间的数据。无返回值。 
c.max_size()    返回容器中最大数据的数量。
c.pop_back()      删除最后一个数据。
c.push_back(elem)    在尾部加入一个数据。
c.rbegin()     传回一个逆向队列的第一个数据。
c.rend()     传回一个逆向队列的最后一个数据的下一个位置。
c.resize(num)      重新指定队列的长度。
c.reserve()      保留适当的容量。
c.size()    返回容器中实际数据的个数。
c1.swap(c2)
swap(c1,c2)      将c1和c2元素互换。同上操作。
operator[]      返回容器中指定位置的一个引用。

4.list的操作

 //list的定义
list<int>ilist; //list的操作
assign()      给list赋值
back()        返回最后一个元素
begin()       返回指向第一个元素的迭代器
clear()       删除所有元素
empty()       如果list是空的则返回true
end()       返回末尾的迭代器
erase()       删除一个元素
front()       返回第一个元素
get_allocator() 返回list的配置器
insert()      插入一个元素到list中
max_size()    返回list能容纳的最大元素数量
merge()      合并两个list
pop_back()    删除最后一个元素
pop_front()     删除第一个元素
push_back()     在list的末尾添加一个元素
push_front()    在list的头部添加一个元素
rbegin()      返回指向第一个元素的逆向迭代器
remove()       从list删除元素
remove_if()     按指定条件删除元素
rend()        指向list末尾的逆向迭代器
resize()      改变list的大小
reverse()      把list的元素倒转
size()        返回list中的元素个数
sort()       给list排序
splice()      合并两个list
swap()        交换两个list
unique()       删除list中重复的元素

//deque因为笔者没用过所以不说明了

5.stack和queue的操作

 //栈的定义
格式:stack<数据类型>名称;
stack<int>sta; //栈的操作
sta.empty() 如果栈为空,则返回true,否则返回stack
sta.size() 返回栈中元素的个数
sta.pop() 删除栈顶元素的值,但不返回其值
sta.top() 返回栈顶元素的值,但不删除该元素
sta.push(item) 在栈顶压入新元素 //队列的定义
格式:queue<数据类型>名称;
queue<int>que; //队列的操作
q.empty() 如果队列为空,则返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队首元素,但不返回其值
q.front() 返回队首元素的值,但不删除该元素,该操作只适用于队列
q.back() 返回队尾元素的值,但不删除该元素,该操作只适用于队列
q.top() 返回具有最高优先级的元素值,但不删除该元素,该操作只适用于优先级队列
q.push(item) 对于queue,在队尾压入一个新元素,对于priority_quue,在基于优先级的适当位置插入新元素

//关联容器笔者也没用过,也不会不阐述了  不过本人认为,容器的操作基本类似只要注意细节的处理就好了

c/c++容器操作的更多相关文章

  1. Docker:镜像操作和容器操作

    镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...

  2. 容器大小的改变以及容器操作可能使迭代器失效、vector对象的容量变化

    1 改变容器的大小 我们可以使用resize来增加或缩小容器,与往常一样,array不支持resize.如果当前大小大于所要求的大小,容器后面的元素会被删除:如果当前大小小于新大小,会将新元素添加到容 ...

  3. C++ 容器操作

    typedef struct point { int x; int y; }Point; 在声明变量的时候就可以:Point p1; 如果没有typedef, 如: struct point { in ...

  4. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  5. 004-docker命令-容器生命周期管理、容器操作

    1.容器生命周期管理 docker run :创建一个新的容器并运行一个命令 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: - ...

  6. 顺序容器----顺序容器操作,vector对象如何增长,额外的string操作,容器适配器

    一.顺序容器操作 1.向顺序容器添加元素 向顺序容器(array除外)添加元素的操作: 操作 说明 c.push_back(t) 在c的尾部创建一个值为t的元素.返回void c.emplace_ba ...

  7. STL容器能力一览表和各个容器操作函数异常保证

    STL容器能力一览表 Vector Deque List Set Multiset map Multimap 典型内部 结构 dynamic array Array of arrays Doubly ...

  8. 【足迹C++primer】38、关联容器操作(2)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/35244805 关联容器操作(2) map ...

  9. docker 容器操作( 以 tomcat 为例 )

    一.容器操作 一个镜像可以启动多个容器.比如一个 tomcat 镜像,可以启动多个tomcat 容器,启动后的这些 tomcat 都是各自独立的 二.步骤 1.搜索镜像 [root@localhost ...

  10. Minikube之Win10单机部署Kubernetes(k8s)自动化容器操作的开源平台

    Minikube之Win10单机部署 Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以 ...

随机推荐

  1. 第一次团队Scrum

                                    长大一条龙之成绩查询 一.项目介绍             本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的 ...

  2. 使用Cloud application Studio在C4C UI里创建下拉列表(dropdown list)

    在Cloud Application Studio里新建一个Code List Data Type: 维护Value和描述信息,以及在ABSL里使用的constant值. 保存之后,上述维护的信息会存 ...

  3. 使用DOM Breakpoints找到修改属性的Javascript代码

    使用Chrome开发者工具的DOM断点功能可以让您快速找到修改了某一个DOM元素的Javascript代码. 在Chrome开发者工具里,选中想要监控的DOM元素,点击右键,选择Break on-&g ...

  4. C语言 指向函数的指针

    #include <stdio.h> int sum(int a, int b) { int c = a + b; printf("%d + %d = %d\n", a ...

  5. Android(java)学习笔记47:通过反射获得构造方法并且使用

    1. 获取字节码文件对象:             Class c = Class.forName("cn.itcast_01.Person"); 2. 获取构造方法       ...

  6. CF633C Spy Syndrome 2

    嘟嘟嘟 题面:把一句话加密:1.所有字母变成小写.2.翻转所有单词.3.去掉空格.然后给你一句加密后的字符串以及一些出现在原句和没有出现在原句的单词,让你还原原句.注意,每一个单词可以使用多次,如果有 ...

  7. java中equals以及==的用法(简单介绍)

    简单介绍 equals方法是java.lang.Object类的方法 有两种用法说明: 一.对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同. 1.“==”比较两 ...

  8. qbxt Day4

    1.树形dp 例题1 树上最长链 其实有两种方法,但为了简便,就只学了最通用的dp算法 我们考虑设dp[i][0/1]表示以i为根的最长路和次长路,然后拼接就行了 第二维0表示最长路,1表示次长路 i ...

  9. Android学习笔记_68_ android 9patch 图片

    http://meiyitianabc.blog.163.com/blog/static/10502212720115354948909/

  10. Kinect骨架数据