赛博空间7号

The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.--Stephen William Hawking

(翻译)c++ vector:一份极简指南

vector

vector是c++中一种存储元素的容器,但是它的size能够动态地改变。

(翻译)c++ vector:一份极简指南

让我们先从初始化开始,vector可以存储int,float,double,string等类型的元素,让我们先从简单的int类型开始。

vector<int> v;

好的,我们已经初始化了一个vector,现在让我们往里面存储一些整数,使用的方法是“push_back”(类似与python中列表的append方法)。

vector<int> v; 
v.push_back(2);    
v.push_back(5);    
v.push_back(1);    
v.push_back(3);    
v.push_back(4);

现在我们的数组中就有了5个数字(翻译)c++ vector:一份极简指南


如果你想移除最后一个元素,使用pop_back()方法。

v.pop_back();

如果我们想要移除第一个元素,需要使用erase()方法。我们需要将想要删除元素的位置参数传递给erase()。

v.erase(v.begin())

我们也可以用erase()方法删除最后一个元素。

v.erase(v.begin()+v.size()-1)

你如果想取出第一个元素,使用:

v.front()

取出最后一个元素:

v.back()

获取vector的长度:

v.size()

判断vector为空,使用:

if(v.empty())

而不是

if(v.size()==0)

(原因:

Because if you switch from std::vector to std::list or other container, it may be different.

For example some implementations of std::list::size take O(n) and not O(1).

)


作为简单的数组,vector当然可以使用“[]”和“=”

v[1] = 20;    
v[2] = 30;    
cout << v[0] << endl; // 10 ;   
cout << v[1] << endl; // 20;
cout << v[2] << endl; // 30v[0] = 10;

清空vector中所有元素:

vector.clear();

我们还可以使用algorithm的sort()来对vector中的元素以升序进行排序:

#include <algorithm>
sort(v.begin(),v.end());

如果对vector中的元素以降序进行排序,需要使用greater<int>()作为sort的第三个参数:

#include <algorithm>
sort(v.begin(),v.end(),greater<int>());

假如我们要将上面降序的代码写成一个函数,我们如何将vector作为参数传递给函数呢?有两种方式:

as a reference(引用):

void desc_sort(vector<int> &v)
{sort(v.begin(),v.end(),greater<int>());}
desc_sort(v);

as a pointer(指针)

void desc_sort(vector<int> *v)
{sort(v->begin(),v->end(),greater<int>());}
desc_sort(v);


发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

© 版权所有:沈阳市和平区赛博空间咨询部|辽ICP备18005891号
Powered by Z-BlogPHP & Yiwuku.com