STL vector的使用(二)排序

来源:互联网 发布:mac不用u盘安装win7 编辑:程序博客网 时间:2024/05/06 17:45

一. vector 迭代器:

除了使用下标来访问vector对象的元素外,标准库还提供了访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并且遍历元素的数据类型。

1. 容器的iterator类型:

vector<int> ::iterator it;


2. begin和end操作

begin返回的元素指向第一个元素
end返回的迭代器指向最后一个元素的下一个

vector<int>::iterator iter=v.begin();


举例:将vector中的元素全部赋值为0

for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++){    *iter=0;}

二. vector元素的排序:

less(小于) //升序排列
greater(大于) //降序排列
equal_to(等于)
not_equal_to(不相等)
less_equal(小于等于)
greater_equal(大于等于)

1. 函数原型:

template <class RandomAccessIterator>  void sort ( RandomAccessIterator first, RandomAccessIterator last );    template <class RandomAccessIterator, class Compare>  void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );


2. 例子一:
sort(vec.begin(), vec.end(), less<int>());


3. 例子二:

sort(vec.begin(), vec.end());

四. 结构体的排序:

1. 需要重载操作符:

struct AverageErrorResult{std::vector<int> mIndexArray;int mCalcBur0; int mGapPower;int mEngagePower;int mBladeAnglePower;int mAverageErrorRate;bool operator <(const AverageErrorResult& other)const   //升序排序    {        return mAverageErrorRate < other.mAverageErrorRate;    }    //或者    bool operator >(const AverageErrorResult& other)const   //降序排序    {        return mAverageErrorRate > other.mAverageErrorRate;    }};

2. 调用:

sort(mAverageErrorRateArray.begin(), mAverageErrorRateArray.end(),less<AverageErrorResult>());




5 0
原创粉丝点击