STL 学习笔记2
来源:互联网 发布:外星人源码 编辑:程序博客网 时间:2024/05/21 22:54
关于STL的几个问题。
首先, 在使用STL的时候, 程序中必须包含相关的头文件。
首先, 介绍vector的几个常见的问题。
Q: 存取vector的元素有两种办法, 即: 成员函数at() 和[], 二者有什么区别?
A: 使用[]去存取向量的元素的时候, 不会做range Check, 也就是说如果我们访问越界了, 全然不知。 而at() 函数在访问vector元素发生越界的时候, 会抛出异常错误。
Q:vector 和数组的相同之处
A: 都可以随机存取。
Q:对于vector的访问其中元素的方式有几种?
(1)通过下标, 例如vec[i]
(2)通过迭代器, *itr,这种方式比上面的random access更加的高效, 通常采用这种访问的办法。
(3)使用成员函数 vec.at(i)
Q:对于一个容器, 有没有一个通用的办法去访问容器中的元素?
A: 有, 例如:
就是一个访问容器通用的办法, 如果我们将vector 改为list, 同样适用:
尽管容器类有很。 但是这所有的容器却有些相同的接口。 如下:
例如, 我们将上面的vector 改为list, 同样是valid的。
对于向量, 有如下性质:
对于deque, 有如下性质:deque也想vector一样支持random access。
下面说说list.。 一个list 就是一个doubly linked list:
list 的相关特点如下:
注意insert(itr, 8)的意思是将8插入到itr的前面(此时itr指向的是2). 对于list而言, 无法随机存取。 list 相比于deque和lvector优点是插入和删除操作只需要花费常数的时间。 远远快于向量和双向对列。 list 的缺点是搜索太慢O(n)。 事实上远远比向量的搜索要慢的多。 不连续的内存, catch(缓存)比较慢。 而且list比向量占用的内存大。
尽管list优缺点。 但是list又有一杀手锏函数。 没有哪一个容器能够在这方面比得上list。 这就是函数splice。
上述的意思是, 对于一个myList2, 迭代器itr_a 和itr_b 定义了一个myList2中元素的range。 通过使用函数splice, 我们cut my data from myList2, insert it at myList1, at the position of itr(插入的位置)。 无论我们的这个切片的data 有多huge。 这个操作只需要花费常数时间。
接下来看看每个节点只有一个指向下一个元素的前向链表:
对于一般的array, 有两个限制:
(1)大小不能改变。
(2) 2个整数的数组容器可能是不同的容器, 例如:
- stl学习笔记2
- STL学习笔记2
- STL 学习笔记2
- C++ STL学习笔记(2)
- STL学习笔记2 List
- STL学习笔记-->初识STL
- STL学习笔记--初识STL
- stl之顺序容器学习笔记2
- stl之关联容器学习笔记2
- stl之顺序容器学习笔记2
- stl之关联容器学习笔记2
- C++ STL学习笔记2--String
- STL之学习笔记
- stl学习笔记1
- stl学习笔记3
- stl学习笔记4
- stl学习笔记5
- stl学习笔记6
- 输出的各个方面
- 颜色选取和转换小工具
- 取石子游戏--各类取石子总结
- Linux驱动平台管理——重塑世界
- 解决Keil的OxFD_BUG
- STL 学习笔记2
- html 常用标记(4)a标记、路径写法、锚点
- try{}catch(){}finally语句块
- 国内外从事CV相关的企业
- bzoj 1588 [HNOI2002]营业额统计 splay
- Java 信号量 Semaphore 介绍
- 7/23
- 数量可变的
- oracle中巧妙SQL语句