赞
踩
目录
C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。头文件#include<vector>。
(1) 声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。(2)用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推.
vector<int> ve
- ve.clear() 清空容器中所有数据。
- ve.empty() 判断容器是否为空。
- ve.erase(pos) 删除pos位置的数据
- ve.erase(beg,end) 删除[beg,end)区间的数据
- ve.front() 传回第一个数据。
- ve.back() 传回最后一个数据,不检查这个数据是否存在
- ve.insert(pos,elem) 在pos位置插入一个elem拷贝
- ve.pop_back() 删除最后一个数据。
- ve.push_back(elem) 在尾部加入一个数据。
- ve.resize(num) 重新设置该容器的大小
- ve.size() 回容器中实际数据的个数。
- ve.begin() 返回指向容器第一个元素的迭代器
- ve.end() 返回指向容器最后一个元素的迭代器
- ve.reserve() 改变当前vecotr所分配空间的大小
- ve.capacity() 容器容量
- ve.at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range
- ve.assign(beg,end): 将[beg; end)区间中的数据赋值给ve
- ve.assign(n,elem): 将n个elem的拷贝赋值给ve
- ve.~ vector <Elem>() 销毁所有数据,释放内存
- vector<int> v;
- for (int i = 1; i <= 1000; ++i)
- {
- v.push_back(i);
- }
在大多数STL实现中,这段代码在循环过程中将会导致2到10次重新分配。
- vector<int> v;
- v.reserve(1000); //使用reserve()函数提前设定容量大小
- for (int i = 1; i <= 1000; ++i)
- {
- v.push_back(i);
- }
这在循环中不会发生重新分配。
cout<<ve[0]<<endl; //记住下标是从0开始的
- vector<int>::iterator it; //用来遍历或者指向容器里面的元素
- for(it=ve.begin();it!=ve.end();it++)
-
- {
- cout<<*it<<endl;
- }
- //判断vector中某一元素是否存在
- bool is_element_in_vector(vector<string> v, string str)
- {
- vector<string>::iterator it;
- it = find(v.begin(), v.end(), str);
- if (it != v.end()) {
- return true;
- }
- return false;
- }
- //返回vector中某一个元素的下标
- int element_index(vector<string> v, string str)
- {
- vector<string>::iterator it;
- it = find(v.begin(), v.end(), str);
- if (it != v.end())
- {
- int res = it - v.begin();
- return res;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。