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. 数据库操作(c#)

    windows窗体程序中的数据库操作部分 //数据库连接串 internal static string connstring = "Data Source = 192.168.1.1; I ...

  2. 【转】有关onpropertychange事件

    <div style="border:1px solid #fc0;height:24px;width:300px;" id="target">&l ...

  3. POJ 1191 棋盘分割 【DFS记忆化搜索经典】

    题目传送门:http://poj.org/problem?id=1191 棋盘分割 Time Limit: 1000MS   Memory Limit: 10000K Total Submission ...

  4. js 中获取 日期

    运行结果

  5. 【洛谷P1801】黑匣子

    黑匣子 题目链接 看到题解中“维护两个堆”,突然想到了这道题的解法 维护两个堆:大根堆h1, 小根堆h2 大根堆里的是最小的i个值,小根堆里是剩下的值 每Add一个值时 插入到小根堆中, 再比较小根堆 ...

  6. 【洛谷P1083】[NOIP2012]借教室

    借教室 [题目描述] 在n天中每天有一个可以借出的教室数,有m个订单,每个订单从第l天到第r天要借用x个教室.问能否满足所有的订单,若不能,输出第一个不能满足的订单编号. 思路: 1.1 ≤ n,m ...

  7. ECMAScript 内置类型、对象和运算符

    原始值是以下内置类型 之一的成员:Undefined,Null,Boolean,Number,String: 对象是剩下的内置 类型 Object 的成员:函数是可调用对象 (callable obj ...

  8. 零基础Python知识点回顾(三)

    元组 元组是用圆括号括起来的,其中的元素之间用逗号隔开.(都是英文半角)tuple(元组)跟列表类似是一种序列类型的数据,特点就是其中的元素不能更改 既然是有序的,那么,嘿嘿,不错,它也可以有索引,能 ...

  9. python语言验证码识别,以后不用老输入验证码了。

    1.Python 3.6 安装包 1.要加环境变量 2.pip安装PIL库 3.pip安装pytesseract模块 2.tesseract-ocr-setup-4.00.00dev.exe   -- ...

  10. Struts2知识点小结(三)--值栈与ognl表达式

    1.问题一 : 什么是值栈 ValueStack        回顾web阶段 数据交互问题?        客户端提交数据  到  服务器端    request接受数据+BeanUtils实体封装 ...