网易云C++第六周笔记(GeekBand)
2016-08-23 本文已影响0人
林小七Raul
1.各种不同的容器
(1)stack 栈,栈是一种只在一端进,在同一端出的容器,也就是fist in last out(FILO),栈的支持的操作有增加(push),删除(pop)。获取顶端元素
![](https://img.haomeiwen.com/i2113638/2bcee5b511dd893f.png)
当使用pop函数时,删除的永远是最顶端的元素。另外stack只能访问顶端元素,所以无法对stack进行遍历
(2)Queue队列,和stack相反,Queue是一种从一端进,在另一端出的数据结构,也就是fast in fist out(FIFO),这就像我们平时排队买饭一样。Queun可以进行删除(pop),增加(push),获取前端元素(front),获取后端元素(back)等操作。
![](https://img.haomeiwen.com/i2113638/733d746d7ecae7a4.png)
同样,队列只能访问最前和最后的元素,所以也无法对队列进行遍历。
(3)map,一种关联容器,map是一种关联容器,存放key/value键值对,注意在map中不允许出现重复的key,map的一些操作如下
![](https://img.haomeiwen.com/i2113638/068d1b0e4770f2e1.png)
(4)mulitiMap,基本上和map特性差不多,但在Multimap中允许出现重复的key。
(5)set,关联容器,关键字即值,只保存关键字的容器,我们可以通过关键字来获取与之对应的值,在set中,默认的是less排序,比如下面的例子:
![](https://img.haomeiwen.com/i2113638/6b8e1348248fcb5c.png)
![](https://img.haomeiwen.com/i2113638/ad20169c6d6457ac.png)
以下是set一些基本算法
![](https://img.haomeiwen.com/i2113638/738c57c46e45798a.png)
![](https://img.haomeiwen.com/i2113638/a55b07a0a50efb66.png)
![](https://img.haomeiwen.com/i2113638/d1af9c8bc408ab0b.png)
于set相关的算法有很多,就不一一例举。
还要注意的是,set不允许通过迭代器改变对象成员
2.仿函数
仿函数又称为函数对象,其作用相当于一个函数指针,可以用一个相应的类型数据接受这个函数处理的对象。下面是一个仿函数的实例
![](https://img.haomeiwen.com/i2113638/bb211de756a8064a.png)
![](https://img.haomeiwen.com/i2113638/5a0b759e43877a77.png)
set1排序方式由自定义的仿函数决定,需要注意的是,仿函数必须要重载operator(),