vector理论知识
vector就是数组在C++中的另一种称呼,vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector类型与数组类型比较:
- vector类型长度是动态的,可以根据需要动态的调用push_back函数添加新的元素,而数组的长度是固定的;
- 数组没有获取数组大小的函数,而vector类型提供size函数能够方便的获取容器的大小;
- 现代C++程序应尽量使用vector和迭代器类型,而避免使用低级的数组指针,只有在强调程序的速度时才在类实现的内部使用数组和指针。
头文件:#include <vector>
还需加全域名:using namespace std;
vector 的定义和初始化 四种方法:
1. vector v1; 例如:vector v1; 表示定义了一个整型数组,元素的值为0
2. vector v2(v1); 例如 vector v2(v1) 表示定义了一个v2数组,并用v1进行初始化;
3. vector v3(n,i); 例如vectorv3(5,10)表示定义了一个v3数组,有5个元素,初始值都为10;
4. vector v4(n); 例如vector v4(5)表示定义了一个字符串的v4数组,有5个元素。
向vector添加一个数据
push_back()函数表示将数据添加到vector的尾部,并按需要来分配内存。
vector插入一个数据
s.insert(it, x)
向迭代器it指向的元素前插入新元素val。
s.insert(it, n, x)
向迭代器it指向的元素前插入n个x。
s.insert(it, first, last)
将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面。
删除vector中的数据
vector提供了
erase()【v.erase(v.begin()+2);删除第3元素vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1]】,
pop_back(),【可以高效地移除vector中的最后一个元素】
clear()【清空】
来删除数据,当你删除数据的时候,你应该知道要删除尾部的数据,或者是删除所有数据,还是个别的数据。
vector大小
size(); empty();
vector的遍历
下标法(类似数组),at()函数。
使用迭代器访问元素:
//vector的begin(), end()它们分别指向“向量开始处”和“结束处后一个”的迭代器
vector<int>::iterator x;
for(x=vec.begin();x!=vec.end();x++)
cout<<*x<<endl;
其他函数:
http://blog.csdn.net/phoebin/article/details/3864590#comments
s.front()
返回首元素。
s.back()
返回尾元素。
s.reserve(n)
预分配缓冲空间,使存储空间至少可容纳n个元素。
s.resize(n)
改变序列的长度,超出的元素将会被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间。
s.resize(n, val)
改变序列的长度,超出的元素将会被删除,如果序列需要扩展(原空间小于n),将用val填满扩展出的空间。
s.swap(v)
将s与另一个vector对象v进行交换。
。。。。。。