C++标准库 vector排序
前天要做一个对C++ STL的vector容器做一个排序操作,之前一直把vector当做一个容量可自动变化的数组,是的,数组,所以打算按照对数组进行排序的方法:用快速排序或是冒泡排序等算法自己写一个排序的函数。后来觉得STL这么强大,应该有它自己的排序方法(没有好好学习啊),然后就去google了一下,果然有,而且可以自定义排序的函数,太强大了(而且效率应该比我自己写的要好吧)。
- // VectorSort.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <algorithm>
- //先自定义一个结构体
- struct Test {
- int member1;
- int member2;
- };
- //自定义排序函数
- bool SortByM1( const Test &v1, const Test &v2)//注意:本函数的参数的类型一定要与vector中元素的类型一致
- {
- return v1.member1 < v2.member1;//升序排列
- }
- void MyPushback(std::vector<Test> & vecTest, const int &m1, const int &m2)
- {
- Test test;
- test.member1 = m1;
- test.member2 = m2;
- vecTest.push_back(test);
- }
- void PrintVector( std::vector<Test> & vec)
- {
- /*
- 插一句,
- vec.begin()对应的位置是向量的第一个位置,
- vec.end()对应的是vector中的最后的一个元素位置的后面的一个位置(我认为,实际上是一个无效位置)
- 文档上的定义:Returns an iterator referring to the past-the-end element in the vector container.
- */
- for(std::vector<Test>::iterator it = vec.begin() ; it != vec.end() ; it++ )
- {
- std::cout<<it->member1<<'\t'<<it->member2<<std::endl;
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- std::vector<Test> vecTest;
- MyPushback(vecTest,9,1);
- MyPushback(vecTest,8,2);
- MyPushback(vecTest,7,3);
- MyPushback(vecTest,6,4);
- MyPushback(vecTest,5,5);
- MyPushback(vecTest,4,6);
- MyPushback(vecTest,3,7);
- MyPushback(vecTest,2,8);
- MyPushback(vecTest,1,9);
- //排序之前
- std::cout<<"Before Sort:"<<std::endl;
- PrintVector(vecTest);
- std::cout<<"对向量中的所有元素按member1进行升序排列:"<<std::endl;
- std::sort(vecTest.begin(),vecTest.end(),SortByM1);
- PrintVector(vecTest);
- //std::cout<<"对向量中的第2个到第5个元素按member1进行升序排列:"<<std::endl;
- //std::sort(vecTest.begin()+1,vecTest.begin()+5,SortByM1);//vecTest.begin()+5为第6个位置
- //PrintVector(vecTest);
- return 0;
- }


C++标准库 vector排序的更多相关文章
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...
- c/c++ 标准库 vector
c/c++ 标准库 vector 标准库 vector的小例子 test1~test7 #include <iostream> #include <vector> using ...
- C++标准库vector类型的使用和操作总结
vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...
- C++ Primer 有感(标准库vector及迭代器)
vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...
- C++标准库vector以及迭代器
今天看C++的书,出现了一个新的概念,容器vector以及容器迭代器. vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存. ...
- C++标准库vector及迭代器
vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...
- 在stm32开发可以调用c标准库的排序和查找 qsort bsearch
在嵌入式开发中,可以使用c标准库自带的库函数,而不用自己去早轮子,qsort 和bsearch就是其中的两个比较好用的 二分法查找,前提是已经排序好的数据.下面的代码, 如果数据为排序,则要进行排序后 ...
- C++标准库vector类型详解
Vector简介 vector是定义在C++标准模板库,它是一个多功能.能够操作多种数据结构和算法的模板类(关于模板类我们后面会介绍,如何创建自己的模板类).vector是一个容器,能够像容器一样存放 ...
- c++标准库vector&list使用练习
/* vector顺序存储,随机访问快 list链表存储,插入删除快 deque占用内存多,兼具两者优点 注意: 1.vector严格顺序存储 2.list的迭代器只能做++或--运算,要一次移动多个 ...
随机推荐
- cocos2d-x 2.2.3 建project
2.2以后不再使用模板安装了. 打开终端,进入cocos2d-x文件夹下的tools/project-creator,运行命令 ./create_project.py -project [项目名] - ...
- BestCoder Round #56/hdu5463 Clarke and minecraft 水题
Clarke and minecraft 问题描述 克拉克是一名人格分裂患者.某一天,克拉克分裂成了一个游戏玩家,玩起了minecraft.渐渐地,克拉克建起了一座城堡. 有一天,克拉克为了让更多的人 ...
- 网关 192.168.2.1 114.114.114.114 dns查询
在浏览器输入域名 分析抓包数据 分析 ip 192.168.3.123 网关192.168.2.1
- 【CSU 1079】树上的查询
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1079 现有一棵有N个顶点的树,顶点的标号分别为1, 2, …, N.对于每个形如a b k的询问, ...
- Unity3D游戏,TCP,WEBCOSKT,HTTP通信架构 weaving-socket
weaving-socket 详细介绍 项目简介 2017-8-8:新发布功能 增加U3D游戏客户的通讯项目支持,并提供示例内容. 2017-5-5: 新发布 weaving-socket 架构的.n ...
- 【POJ 2983】 Is the information reliable?
[题目链接] 点击打开链接 [算法] 差分约束系统,SPFA判负环 [代码] #include <algorithm> #include <bitset> #include & ...
- 关于Dubbo中一些小众但很实用的功能
dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些你不一定知道,但是很好用的功能: 直连Provider 在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要 ...
- 每天一个 linux命令(35):ln 命令(转载)
转载:http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html ln是linux中又一个非常重要命令,它的功能是为 某一个文件在另外一个 ...
- bzoj 1707: [Usaco2007 Nov]tanning分配防晒霜【贪心||最大流(?)】
洛谷上能过的最大流bzoj上T了--但是贪心做法明明在洛谷上比最大流要慢啊--如果是最大流的话就是裸题了吧 说一下贪心,就按照防晒霜排序,然后对每一个防晒霜选一头可以使用的且r最小的牛 就,没了. 贪 ...
- [C陷阱和缺陷] 第7章 可移植性缺陷
C语言在许多不同的系统平台上都有实现.的确,使用C语言编写程序的一个首要原因就是,C程序能够方便地在不同的编程环境中移植. 不同的系统有不同的需求,因此我们应该能够预料到,机器不同则其上的C语 ...