STL中vector的用法
Posted xqn2017
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL中vector的用法相关的知识,希望对你有一定的参考价值。
vector应该是STL种最常用的容器了,可以当做数组来看待,只不过vector的元素更丰富,不仅仅是数据元素,还可以是结构体
1、vector的创建和初始化
vector <double> v;//创建一个double类型的vector vector <int> v2(5);//创建一个含有5个元素的int型vector,初始值默认为0 vector <int> v3(4,7);//创建一个含有4个元素的int型vector,初始值都为7
当然也可以通过在尾部添加元素来初始化
vector <double> v; v.push_back(3.5); v.push_back(4.9); v.push_back(1.5);//其中v[0] = 3.5 v[1] = 4.9 v[2] = 1.5
2、vector的元素遍历
vector <double> v; v.push_back(3.5); v.push_back(4.9); v.push_back(1.5); //下标访问 for(int i = 0; i < v.size();i++) { cout << v[i] << endl; } //const迭代器访问 for(vector <double>::const_iterator it = v.begin(); it !=v.end();it++) { cout << *it << endl; } //非const迭代器访问 for(vector <double>::iterator it = v.begin(); it !=v.end();it++) { cout << *it << endl; } //逆序访问,同样分为const和非const for(vector <double>::reverse_iterator it = v.rbegin(); it !=v.rend();it++) { cout << *it << endl; }
说明一下,其中的const和非const迭代器在访问元素时没有区别,只是非const迭代器可以通过*it = value来改变vector元素的值
3、vector的插入操作
v.insert(v.begin()+2,5); //在索引为2(从0开始)的位置插入元素5 v.insert(v.begin(),2,3);//在索引为0的位置插入2个值为3的元素
4、vector的删除
v.erase(v.begin()+i);//删除索引为i的元素 vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始 vec.clear();//删除所有元素
举个例子,删除double类型的vector中与指定值key相等的元素
vector <double> v; v.push_back(3.5); v.push_back(4.9); v.push_back(1.5); v.push_back(3.5); v.push_back(3.5); v.push_back(4.9); v.push_back(3.5); double key = 3.5; const double MIN = 0.00000001; //索引删除 for(int i =0; i<v.size();i++) { if((v[i] - key < MIN) && (v[i] -key > -MIN)) //double类型,需要定义一个精度 { v.erase(v.begin()+i); i--;//假设[2,3,4]删除元素3,其索引为2,删除3后,元素4成了索引2对应的值,所以减一 cnt++; } } //或者用迭代器删除 for(it = v.begin();it != v.end();) { if((*it - key < MIN) && (*it -key > -MIN)) { it = v.erase(it); //删除函数返回的是下一个元素的迭代器 cnt++; } else { it++; } }
5、
以上是关于STL中vector的用法的主要内容,如果未能解决你的问题,请参考以下文章