【转】vector中对象指针的排序
原文:http://blog.csdn.net/tanlijun37/article/details/1948493
vector中对象指针的排序,初步想法是
1: 把对象指针存到vector,重载bool operator(对象指针)
2:用sort来排序
例:
class A
{
public:
bool operator(const A* temp)
{
return this->a < temp->a;
}
A(int a)
{
this->a = a;
}
int a;
};
vector<A*> vec;
vec.push_back(new A(10));
vec.push_back(new A(5));
vec.push_back(new A(4));
sort(vec.begin(), vec.end);
然而排序的结果却不对
后来上网查了一下,原来当我排序vector的时候,它比较的是指针,而不是对象,并且operator<重载符的参数应该用引用,而不是指针
解决办法:
1:声明一个全局的比较函数
例:
bool CompLess(const A* lhs, const A* rhs)
{
return lhs->GetA() < rhs->GetA();
}
sort(vec.begin(), vec.end, CompLess);
2: 声明一个函数对象
class CompLess2
{
public:
bool operator()(const A* lhs, const A* rhs)
{
return lhs->GetA() < rhs->GetA();
}
};
sort(vec.begin(), vec.end, CompLess2);
【转】vector中对象指针的排序的更多相关文章
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- js中对象的自定义排序
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数 var compareAsc = function (prop) { return function (obj1, obj2) { va ...
- JS中对象按属性排序(冒泡排序)
在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...
- CPP-STL:用vector保存对象时保存指针的优点, 以及reserve的使用(转)
代码1 #include <vector> #include <stdio.h> class A { public: A() { printf("A()/n" ...
- 转载:用vector保存对象时保存指针的优点, 以及reserve的使用
#include <vector> #include <stdio.h> class A { public: A() { printf("A()/n"); ...
- std list/vector sort 自定义类的排序就是这么简单
所以,自己研究了一下,如下:三种方式都可以,如重写<,()和写比较函数compare_index.但是要注意对象和对象指针的排序区别. 1.容器中是对象时,用操作符<或者比较函数,比较函数 ...
- vector中数据释放崩溃问题
struct LINE { char securityID[32]; /*!< 证券代码 */ int64_t dateTime; /*!< 日期时间(日期变化)YYYYMMDDhhmms ...
- 把vector中的string对象导入到字符指针数组中
#include <iostream>#include <string>#include <vector>//#include <cctype>#inc ...
- c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行 ...
随机推荐
- vi下搜索文本
) /user ) n 下一个匹配 ) N 上一个匹配 ) ?user 从结尾开始搜索 ) :nohlsearch 关闭高亮显示6) :100 跳转到第100行
- 给JFinal添加 Sqlite 数据库支持
[转自] http://my.oschina.net/u/237078/blog/69934 Sqlite 的单文件便携性.高性能在开发中方便性无与伦比,即使部署在中小型应用中也胜任有余. 在JFin ...
- redis cluster 集群拓展
redis cluster 集群拓展 准备工作 举例:添加2个节点(1主7006节点,1从7007节点) 在/home/redis-cluster下生成conf和data目标,并生成配置信息 `; d ...
- Java 写入pdf文件
import java.awt.Color; import java.io.File; import java.io.FileOutputStream; import com.lowagie.text ...
- Lucene初识
1.概述 1.1 Lucene是apache软件基金会4 jakarta项目组的一个子项目: 是一个开放源代码的全文检索引擎工具包: 但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了 ...
- mysql 问题总结[转]
一.Can't connect to MySQL server on 'localhost' (10061) 不能连接到 localhost 上的mysql分析:这说明“localhost”计算机 ...
- oracle 笔记---(七)__角色
一,角色介绍 角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理,假定有用户a,b,c为了让他们都拥有权限:连接数据库和在scott.emp表上select,insert,updat ...
- Spark 概念学习系列之从spark架构中透视job(十六)
本博文的主要内容如下: 1.通过案例观察Spark架构 2.手动绘制Spark内部架构 3.Spark Job的逻辑视图解析 4.Spark Job的物理视图解析 1.通过案例观察Spark架构 s ...
- Linux安装PHP加速器Xcache
XCache 是一个又快又稳定的 PHP opcoolcode 缓存器. 经过良好的测试并在大流量/高负载的生产机器上稳定运行. 经过(在linux 上)测试并支持所有现行 PHP 分支的最新发布版本 ...
- [转]Wrapping multiple calls to SaveChanges() in a single transaction
本文转自:http://www.binaryintellect.net/articles/165bb877-27ee-4efa-9fa3-40cd0cf69e49.aspx When you make ...