【C++ STL】容器概要
1、容器的共通能力
1、 所有的容器都是“value”语意,而不是“reference”语意。容器进行元素的安插操作时,内部实施的都是拷贝操作,置于容器内。因此STL容器的每个元素都必须能被拷贝。如果你打算存放的对象不具有public copy构造函数,或者你要的不是副本(例如你要的是被多个容器共同容纳的元素),那么元素就只能是指针(指针对象)。
2、 所有元素都形成一个次序。每个容器都可以依相同次序一次或多次遍历每个元素。每个容器都提供返回“迭代器”的函数,运用这些迭代器可以访问所有元素。
3、 各项操作非绝对安全。调用者必须保证传给操作函数的参数符合要求。违反这些要求(例如非法索引)会导致未定义的行为,并且STL不会抛出异常,从而导致程序数据错误或者崩溃等问题。
2、容器的共同操作
每个容器都有个default构造函数,一个copy函数和一个析构函数。
|
操作 |
效果 |
|
ContType c |
产生一个未含任何元素的空容器 |
|
ContType c1(c2) |
产生一个同型容器 |
|
ContType c(begin,end) |
复制[begin,end]区间的元素,作为初值 |
|
c.size() |
返回容器中的元素数量 |
|
c.empty() |
判断容器是否为空,相当于(0==size()),可能更快 |
|
c.max_size() |
返回元素的最大可能数量 |
|
c1 == c2 |
判断c1是否等于c2 |
|
c1 != c2 |
判断c1是否不等于c2,相当于!(c1==c2) |
|
c1 < c2 |
判断是否c1小于c2 |
|
c1 > c2 |
判断c1是否大于c2 |
|
c1 >= c2 |
判断是否c1大于等于c2,相当于!(c1<c2) |
|
c1 <= c2 |
判断是否c1小于等于c2,相当于!(c1>c2) |
|
c1 = c2 |
将c2所有的元素赋值给c1 |
|
c1.swap(c2) |
交换c1和c2的数据 |
|
swap(c1,c2) |
交换c1和c2的数据,全局函数 |
|
c.begin() |
返回一个迭代器,指向c的第一个元素 |
|
c.end() |
返回一个迭代器,指向c的最后一个元素的下一个位置 |
|
c.rbegin() |
返回一个逆向迭代器,指向逆向遍历的第一个元素 |
|
c.rend() |
返回一个逆向迭代器,指向逆向遍历的最后一个元素的下一个位置 |
|
c.insert(pos,elem) |
将elem的一份副本安插于pos处 |
|
c.erase(beg,end) |
移除[beg,end]区间的所有元素 |
|
c.clear() |
移除所有元素,令容器为空 |
|
c.get_allocator() |
返回容器的内存模型 |
【C++ STL】容器概要的更多相关文章
- STL容器
啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊 #inc ...
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...
- STL容器删除元素的陷阱
今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...
- 【转】c++中Vector等STL容器的自定义排序
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1.Copy构造函数 2.赋值=操作符 3.能够销毁对象的析构函数 另外: 1. ...
- GDB打印STL容器内容
GDB调试不能打印stl容器内容,下载此文件,将之保存为~/.gdbinit就可以使用打印命令了. 打印list用plist命令,打印vector用pvector,依此类推. (gdb) pvecto ...
- STL容器迭代器失效分析
连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...
- STL容器的适用情况
转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...
- STL容器的遍历删除
STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...
- STL容器与配接器
STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector 行为类似于数组,但可以根据要求 ...
随机推荐
- Python中的Numeric
整型Integer 在Python2.X中,Integer有两种类型,一种是32bit的普通类型,一种是精度无限制的long类型,在数字后面标识l或者L来标识long类型,并且,当32bit发生ove ...
- Simple Expression
Description You probably know that Alex is a very serious mathematician and he likes to solve seriou ...
- Web后台任务处理
文章:.NET Core开源组件:后台任务利器之Hangfire Hangfire官网介绍:在.NET和.NET Core应用程序中执行后台处理的简便方法.无需Windows服务或单独的过程. 以持久 ...
- CNN之间的计算
参考内容 1.网易云课堂微专业——深度学习—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm 2.CNN基础介绍:http ...
- Unity3d学习日记(一)
闲来无事开始自学unity3d,发现还挺容易入门的,添加资源文件以及用c#编写脚本都很方便. 前面在Unity官方教程上自学了一段时间,跟着教程写了个space_shooter的小游戏,虽然游 ...
- PAT L1-039 古风排版
https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240 中国的古人写文字,是从右向左竖向排版的.本题 ...
- python dict 字典
字典是通过hash表的原理实现的,每个元素都是一个键值对,通过元素的键计算出一个唯一的哈希值,这个hash值决定了元素的地址,因此为了保证元素地址不一样,必须保证每个元素的键和对应的hash值是完全不 ...
- mysql学习之主从复制
该文使用mysql5.5 centos6.5 64位 一.主从复制的作用 1.如果主服务器出现问题,可以快速切换到从服务器. 2.对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降 ...
- 2018 杭电多校3 - M.Walking Plan
题目链接 Problem Description There are $$$n$$$ intersections in Bytetown, connected with $$$m$$$ one way ...
- springboot2.0 快速集成kafka
一.kafka搭建 参照<kafka搭建笔记> 二.版本 springboot版本 <parent> <groupId>org.springframework.bo ...