1.利用标准库函数sort()对vector进行排序

参考源码:

#include <algorithm>
#include <vector> vector<int> vec;
//比较函数,这里的元素类型要与vector存储的类型一致
bool compare(int a,int b)
{
return a<b; //升序排列
} std::sort(vec.begin(),vec.end(),compare);

注意: 
sort()函数原型申明如下:

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

若不自定义比较函数,默认是按照升序排序。

2.利用标准库函数find()对vector进行查找

vector向量容器没有提供根据元素查找的成员,可使用find函数来完成。 
参考源码:

vector<int> vec;
int a=10;
vector<int>::iterator it=find(vec.begin(),vector.end(),a);

find()原型:

template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val);
  • 1
  • 2

3.构造类型在vector中的排序与查找

将构造类型,比如struct的对象存储在vector中,查找时,需要重载等于运算符(operator==),具体实现参考如下代码。

struct Element{
public:
int a;
int b; Element(int a,int b){
this->a=a;
this->b=b;
}; bool operator==(const Element& ele){
return a==ele.a&&b==ele.b;
};
}; //自定义比较函数
bool compare(const Element& left,const Element& right){
return left.a<right.a; //升序排列
} //重载输出操作符<<,格式化输出Element
ostream& operator<<(ostream& coutU,const Element& ele){
coutU<<"a:"<<ele.a<<",b:"<<ele.b;
return coutU;
} int main(){
vector<Element> vecEle;
vecEle.push_back(Element(4,4));
vecEle.push_back(Element(1,1));
vecEle.push_back(Element(2,2));
vecEle.push_back(Element(3,3)); //sort
std::sort(vecEle.begin(),vecEle.end(),compare);
for(int i=0;i<vecEle.size();++i){
cout<<vecEle[i]<<endl;
} //查找Element(4,4)
vector<Element>::iterator it=find(vecEle.begin(),vecEle.end(),Element(4,4));
cout<<"found "<<*it<<endl;
}

程序输出: 
a:1,b:1 
a:2,b:2 
a:3,b:3 
a:4,b:4 
found a:4,b:4


参考文献

[1]C++ reference std::sort
[2]C++ reference std::find.

vector向量容器元素排序与查找的更多相关文章

  1. 学习笔记之vector向量容器

    今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家. Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单 ...

  2. vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  3. vector向量容器

    vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组. vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存. ...

  4. C++STL之vector向量容器

    vector向量容器   vector向量容器不但能向数组一样对元素进行随机访问, 还能在尾部插入元素 vector具有内存自动管理的功能, 对于元素的插入和删除, 可动态调整所占的内存空间 vect ...

  5. 标准模板库使用参考——vector向量容器

    C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ...

  6. C++从array数组向vector向量复制元素的两种方式

    #include <iostream> #include <vector> using namespace std; int main() { const int arr_si ...

  7. vector 向量容器用法祥解

    vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法:         ...

  8. C++ STL vector(向量容器)的使用(附完整程序代码)

    一.简单介绍 Vectors 包括着一系列连续存储的元素,其行为和数组类似. 訪问Vector中的随意元素或从末尾加入元素都能够在O(1)内完毕,而查找特定值的元素所处的位置或是在Vector中插入元 ...

  9. 利用copy函数简单快速输出/保存vector向量容器中的数据

    如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include <iost ...

随机推荐

  1. 图片的另一种展现—将后台图片编码直接展现为图片

    1.应用场景            开发过程中,遇到这样的需求:需要将服务器上的图片展现在页面上,但是图片所在服务器不是对外的,图片所在服务器与应用服务器也不在同一台机器上,这时候就需要在开发中先将图 ...

  2. 日志-logback

    参考:http://www.importnew.com/22290.html 一 概述 1.1 LogBack.Slf4j和Log4j之间的关系 1)Slf4j(The Simple Logging ...

  3. windows编译hadoop 2.x Hadoop-eclipse-plugin插件

    本文转载至:http://blog.csdn.net/congcong68/article/details/42098391 一.简介 Hadoop2.x之后没有Eclipse插件工具,我们就不能在E ...

  4. ZooKeeper学习第八期---ZooKeeper伸缩性

    转:http://www.cnblogs.com/sunddenly/p/4143306.html 一.ZooKeeper中Observer 1.1 ZooKeeper角色 经过前面的介绍,我想大家都 ...

  5. hdu 5884 Sort 队列+多叉哈夫曼树

    Sort Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  6. review37

    线程的常用方法 1.start() 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队. 2.run() 3.sleep() 4.isAlive() 线程处于新建状态时,线程调用isAlive( ...

  7. WPF的Presenter(ContentPresenter)

    WPF的Presenter(ContentPresenter) 2010-12-20 14:34 by Clingingboy, 10619 阅读, 3 评论, 收藏, 编辑 这是2年前写了一篇文章 ...

  8. 存储过程,游标,异常捕捉 try catch 实例代码

    1.存储过程代码.  (数据库是 AdventureWorks) 存储过程用来将错误信息插入到指定的表中. 在别的地方可以调用存储过程插入错误信息(下面部分代码 生成一个表,如果表已经存在就会插入错误 ...

  9. 51nod 1255 贪心/构造

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1255 1255 字典序最小的子序列 题目来源: 天津大学OJ 基准时间限 ...

  10. 小米刷机教程和GAE for android

    小米上的刷机教程:http://www.miui.com/getrom.php?r=2gae for android :https://github.com/madeye/gaeproxy/wiki