zoukankan      html  css  js  c++  java
  • 【转】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);

  • 相关阅读:
    JS----事件
    JS----计时器
    JS----文档对象模型
    JS----基本数据类型
    JS----函数
    JS----数组
    JS----正则表达式
    CSS----盒子模型与浮动
    Web-9月13日随笔
    Web-9月14日随笔
  • 原文地址:https://www.cnblogs.com/wubugui/p/4307180.html
Copyright © 2011-2022 走看看