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. March 14 2017 Week 11 Tuesday

    Thinking will not overcome fear but action will. 空想终日惶恐,行动方可无惧. As the deadline comes closer and clo ...

  2. 团队合作之Scrum

    CCSU小助手 一:开发团队简介 队名:瓜队 组员:钟文兴.周畅.吉刘磊.唐仲勋 宣言:We are a team at any time! 团队项目描述: 内容:“生活在长大”: 目标:为了方便对学 ...

  3. C++ decltype类型说明符(尾置返回类型使用)

    转自https://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 decltype 类型说明符生成指定表达式的类型.在此过程中,编译器分析 ...

  4. hiho 第155周 任务分配

    最小路径覆盖会超时: 贪心思路: 按照开始时间排序,然后根据结束时间,维护一个以结束时间的单调递增的队列,每次与最快结束的任务进行比较即可: /* #include <cstdio> #i ...

  5. 贪心算法,今年暑假不AC

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037 活动安排问题,可用贪心. 1.把活动按结束时间递增排序. 2.直观上,选择相对活动为未安排活动留 ...

  6. caffe 学习(1) —— Classification: Instant Recognition with Caffe

    学习地址http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb 1.安装m ...

  7. 【洛谷P2341】受欢迎的牛

    受欢迎的牛 题目描述 一些可以当明星的牛,一定会构成一个强连通分量,我们可以先缩点,最后统计一下出度为零的强连通分量大小即可, 若出度为零的强连通分量个数大于1,则输出0 #include<io ...

  8. 【洛谷P3389】(模板)高斯消元

    对于高斯消元法求解线性方程组, 我的理解就类似于我们在做数学题时的加减消元法, 只是把它写成一个通用的程序运算过程 对于一个线性方程组,我们从左往右每次将一列对应的行以下的元通过加减消元消去, 每个元 ...

  9. 学大伟业 Day 6 培训总结

    今天接着昨天的继续讲数据结构 今天先是 分块 在统计问题中,尤其是序列问题,经常涉及到区间的操作,比如修改一段区间的元素,询问某个区间的元素的信息. 如果每次都对一整个区间的每一个元素进行操作的话,那 ...

  10. HDU 1220 Cube(数学,找规律)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1220 Cube Time Limit: 2000/1000 MS (Java/Others)    M ...