C++中vector简介
2016-11-01 10:51
92 查看
一、vector
1. vector(向量):C++中的一种数据结构,确切的说是一个类模板。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。例如:vector<int>和vector<string>都是数据类型。2. 声明一个Int向量以替代一维数组:vector<int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)
3. 内存管理与效率
3.1 使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。
关于STL容器,最令人称赞的特性之一就是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据,vector在重新分配时一般把容量翻倍。当进行insert或push_back等增加元素的操作时,如果此时动态数组的内存不够用,就要动态的重新分配当前的大小的1.5~2倍的新内存区,再把原数组的内容复制进去。所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。对于vector容器来说,如果有大量的数据需要进行push_back,应当使用reserve()函数提前设定其容量大小,否则会出现许多次容量扩充操作,导致效率低下。
3.2 STL(standard template library,标准模板库)容器
参考:http://blog.csdn.net/hackbuteer1/article/details/6791260
C++标准库中的顺序容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,顺序容器适配器类型:stack、queue、priority_queue。
备注:
1.C++中有些函数可以声明为内联(inline)函数,编译器遇到内联函数时就会直接扩展相应代码,而不是进行实际的函数调用。像size()这样的小库函数几乎都定义为内联函数,所以每次循环过程中调用它的运行时代价是比较小的。
2.C++程序员习惯于优先选用!=而不是<来编写循环判断条件。
3.“缓冲区溢出”错误就是对不存在的元素进行下标操作的结果。
4.vector的下标操作不添加元素,只读取或改变已存在元素。
二、iterator迭代器
1.每种容器类型都定义了自己的迭代器类型。iterator类型如:vector <int>2.begin和end操作,用于返回迭代器。begin指向iter[0];而end指向vector的末端的下一个而非末端。通常称为“超出末端迭代器”。
3.const_iterator迭代器,该类型只用于读取容器内元素的值,但不能改变其值。
备注:
1. *为解引用操作。
2. const_iterator与const iterator区别。
例:
#include <iostream> #include <vector> #include <iterator> #define max_size 100 using namespace std; void main() { vector <int> text; text.reserve(max_size); for(int i=0;i!=10;i++){ text.push_back(i); } vector <int>::iterator iter; for(iter = text.begin();iter!=text.end();++iter){ cout<<*iter<<endl;//使用*iter来访问迭代器所指向的元素 } const vector<int> nines(10,9);//cannot change elements in nines const vector<int>::iterator cit2 = nines.begin();//error:cit2 could change the element it refers to and nines is const vector<int>::const_iterator it = nines.begin();//ok,it can't change an element value,so it can be used with a const vector<int> *it = 10;//error:*it is const ++it;//ok,it is't const so we can change its value }
相关文章推荐
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- C++基础:C++中vector使用简介
- C++中vector类型简介
- C++ Primer学习笔记7 标准库类型(标准库vector类型、迭代器简介)
- c++: vector 简介
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- C++基础:C++中vector使用简介
- C++ vector简介
- C++之vector简介
- C++中vector类型简介
- 从零开始学C++之标准库类型(二):vector 类简介和例程
- 构建简单的 C++ 服务组件,第 1 部分: 服务组件体系结构 C++ API 简介
- C++中static关键字简介
- 新一代跨平台C++开发工具Code::Blocks简介
- Visual C++.NET 2005中的STL简介
- 服务组件体系结构 C++ API 简介
- [C++] 何时使用vector
- C++ STL简介
- Visaul C++ 6.0使用简介
- Xerces-C++简介