项目中需要对坐标点排序,转自https://blog.csdn.net/hnu_zxc/article/details/6746029/。侵删。

前天要做一个对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排序相关推荐

  1. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

  2. C++标准库vector类型的使用和操作总结

    vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...

  3. C++标准库vector及迭代器

    vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...

  4. C++ 标准库 vector list map使用方法

    [cpp] view plaincopy List(链表) List将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. list对象函数 as ...

  5. 初识标准库vector

    vector:相同类型对象的集合(不能包含引用,引用不是对象),有索引,是一个类模板,通常称容器. 初始化:与string有些类似,但也有些不同 #include<iostream> #i ...

  6. STL标准库vector笔记

    vector::assign()用法: 1 #include "stdafx.h" 2 #include <iostream> 3 #include <vecto ...

  7. C++标准库中各种排序归纳

    一.简介 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.我们在编程过程中会经常接触到排序,比如游戏中的排行榜等.C++标准库中提供了各种不同的排序算法,这篇博 ...

  8. C++ STL常用标准库容器入门(vector,map,set,string,list...)

    STL常用标准库容器 C++ STL中最基本以及最常用的类或容器无非就是以下几个: 目录 string vector deque list forward_list queue priority_qu ...

  9. C++ 标准库类型 vector

    C++ 标准库类型 vector 一.vector 的使用与定义 1.使用 vector 类型 标准库类型 vector 表示对象的集合,也称容器. #include <vector > ...

最新文章

  1. 05_NoSQL数据库之Redis数据库:Redis的常用命令,键值相关命令和服务器相关命令
  2. 计算机基础- -操作系统环境
  3. Linux 下TC 以及netem队列的使用
  4. rz、sz 命令 安装(Xshell 安装)
  5. OpenStack Juno版本网络节点gre模式配置
  6. 文件存储 服务器 购买,filecoin联合挖矿VS自购存储服务器参与 , 我们该如何选择 ? 如何去规避风险 ?...
  7. web前端-----跨域
  8. 什么是数据可视化分析平台
  9. 什么是我想要守护的东西?
  10. 计算机应用基础模块3实操题正确答案,国开20秋计算机应用基础作业3 模块4 PowerPoint 2010实操题答案...
  11. markdown 表格代码在线生成工具
  12. python人力成本数据测算_人工成本数据统计
  13. 【渝粤教育】电大中专电商运营实操 (2)_1作业 题库
  14. 七步学习法 —— 如何高效学习一项技能
  15. 汽车营销与保险【3】
  16. 卡内基梅隆计算机专业,卡内基梅隆大学计算机科学专业全面解析
  17. 参数构造错误 微信_微信公众号开发常见问题
  18. 5V降压1.5V的几款极大电流IC,超简单的LDO芯片
  19. CSS3使用一个盒子实现太极图案
  20. 王者英雄胜率用计算机怎么算,巅峰赛计算英雄胜率吗

热门文章

  1. 【数据结构】链表:看我如何顺藤摸瓜
  2. 【MFC】MFC消息映射
  3. android六轴传感器,6轴传感器、IP67防水:AMAZFIT米动智芯2 上架有品
  4. 视频分类Video-Swin-Transformer
  5. java实现文件对比_【代码】Java比较文件夹文件
  6. 嵌入式系统主要应用哪些行业?
  7. 设计文档的内容(概要设计,需求分析,详细设计)
  8. scrapy快速入门
  9. 使用Mac ftp命令连接操作阿里云FTP
  10. 论一个糟糕的大数据码农的自我修养