vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组。
vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存。
对于vector容器的容量定义,可以事先定义一个固定大小,然后可以随时调整其大小;也可以事先不定义,随时使用push_back()方法从尾部扩张元素,也可以使用insert()在某个元素位置前面插入新元素。
vector容器有两个重要的方法,begin()和end()。begin()返回的是首元素位置的迭代器,end()返回的是最后一个元素的下一个元素位置的迭代器。
创建vector对象
vector<int> v;
(2)指定容器的大小(带一个参数,表示容器的大小)
vector<double> v(10);
(3)创建一个具有n个元素的向量容器对象,每个元素具有指定的初值(带两个参数,分别表示容器的大小和每个元素的初值)
- #include<vector>
- using namespace std;
- int main()
- {
- vector<int> v;
- v.push_back(1);
- v.push_back(2);
- v.push_back(3);
- return 0;
- }
上面的代码表示:将1,2,3三个元素从尾部添加到v容器中,现在容器的长度为3,三个元素分别是1,2,3
下表方式访问vector元素
- #include<vector>
- #include<iostream>
- using namespace std;
- int main()
- {
- vector<int> v;
- v.push_back(1);
- v.push_back(2);
- v.push_back(3);
- cout<<v[0]<<endl;
- v[1] = 10;
- cout<<v[1]<<endl;
- cout<<v[2]<<endl;
- return 0;
- }
程序输出:1 10 3
使用迭代器访问vector元素
- #include<vector>
- #include<iostream>
- using namespace std;
- int main()
- {
- vector<int> v;
- v.push_back(1);
- v.push_back(2);
- v.push_back(3);
-
- vector<int>::iterator it;
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<endl;
- }
- return 0;
- }
元素的插入
- #include<vector>
- #include<iostream>
- using namespace std;
- int main()
- {
- vector<int> v;
- v.push_back(1);
- v.push_back(2);
- v.push_back(3);
-
- vector<int>::iterator it=v.begin();
- v.insert(v.begin(),8);
- v.insert(v.begin()+2,9);
- v.insert(v.end(),10);
-
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<endl;
- }
- return 0;
- }
输出结果是:8 1 9 2 3 10
向量的大小和元素的删除
- #include<vector>
- #include<iostream>
- using namespace std;
- int main()
- {
- vector<int> v;
- for(int i=0;i<10;i++)
- {
- v.push_back(i);
- }
- cout<<"size:"<<v.size()<<endl;
-
- vector<int>::iterator it=v.begin();
- v.erase(it+1); //删除v[1]
- v.erase(it+4,it+7); //删除v[4]~v[5](!!注意此时的数组已经动态调整了)
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<" ";
- }
- cout<<"\nempty:"<<v.empty()<<endl;
-
- v.clear();
-
- cout<<"empty:"<<v.empty()<<endl;
- return 0;
- }
0 2 3 4 8 9
empty:0
empty:1
- #include<vector>
- #include<algorithm>
- #include<iostream>
- using namespace std;
- int main()
- {
- vector<int> v;
- for(int i=0;i<10;i++)
- {
- v.push_back(i);
- }
-
- vector<int>::iterator it=v.begin();
-
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<" ";
- }
- cout<<endl;
-
- reverse(v.begin(),v.end());
-
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<" ";
- }
- return 0;
- }
输出结果:
9 8 7 6 5 4 3 2 1 0
使用sort算法对向量元素排序
- #include<algorithm>
- #include<vector>
- #include<iostream>
- using namespace std;
- bool Comp(const double &a,const double &b)
- {
- return a>b;
- }
- int main()
- {
- vector<double> v;
- for(double i=2.0;i>1;i=i-0.1)
- {
- v.push_back(i);
- }
- sort(v.begin(),v.end());
-
- vector<double>::iterator it=v.begin();
-
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<" ";
- }
-
- cout<<endl;
- sort(v.begin(),v.end(),Comp);
-
- for(it=v.begin();it<v.end();it++)
- {
- cout<<*it<<" ";
- }
-
- return 0;
- }
2 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1