C ++在向量中对自定义对象进行排序

关闭

关于stackoverflow的许多主题都解决了这个问题,但是对于我的示例,我无法使其正确。我有一个班级活动,以及活动发生的时间。我想根据该时间将这些对象排序为向量。

我首先开始实现operator <,但是随后编译器给出了以下错误:

错误1错误C2582:'操作符='函数在'事件'中不可用c:\ program files(x86)\ microsoft visual studio 12.0 \ vc \ include \ algorithm 3009 1 sorting

因此,我添加了运算符=

以下是我使用的代码:

#include <algorithm>    // std::sort
#include <vector>       // std::vector

using namespace std;

class Event{
public:
     const double time;
     Event(double);
     bool operator<(const Event&);
     bool operator=(const Event&);
};

Event::Event(double time) :
time(time){

}

bool Event::operator<(const Event& rhs)
{
    return this->time < rhs.time;
}

bool Event::operator=(const Event& rhs)
{
    return this->time == rhs.time;
}

int main() {
    vector<Event> vector;
    Event e1 = Event(10);
    Event e2 = Event(5);
    Event e3 = Event(7);
    vector.push_back(e1);
    vector.push_back(e2);
    vector.push_back(e3);
    sort(vector.begin(), vector.end());
    return 0;
}

调试时,我发现我的对象根本没有排序。它们按照我添加它们的顺序。以下是“ vector”变量的摘录:

[0] {time=10.000000000000000 }  Event
[1] {time=5.0000000000000000 }  Event
[2] {time=7.0000000000000000 }  Event

我有以下问题:

  1. 为什么在调用sort时我的事件没有在向量中排序?
  2. 为什么排序需要operator =?
Wojtek Surowka

问题在于,Event由于const double time成员的缘故,无法分配您的类的对象由于成员是const不能修改的,因此不能sort在带有Event对象的容器上使用,因为排序需要分配。

删除const或重新考虑您要做什么。顺便说一句,您混淆赋值运算符(operator=,这是sort需要) with equality operator (operator ==`的东西)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++无法对自定义对象的向量进行排序

来自分类Dev

按属性对对象列表进行排序 C#(自定义排序顺序)

来自分类Dev

C ++ 11通过几个属性对自定义对象进行排序

来自分类Dev

如何通过自定义类中的变量对自定义类列表进行排序?C#

来自分类Dev

使用自定义比较功能进行c ++排序

来自分类Dev

在C ++中对向量进行排序

来自分类Dev

在C ++中对向量进行排序

来自分类Dev

通过重载对自定义对象的向量进行排序<

来自分类Dev

Python中的C ++ lib:自定义排序方法

来自分类Dev

C#中的自定义排序ListBox项

来自分类Dev

在C ++中对向量进行向量排序

来自分类Dev

在C中使用自定义向量

来自分类Dev

使用ApplicationSettingsBase保存自定义设置的C#中的自定义对象的列表

来自分类Dev

C# 计算自定义类数组中的自定义类对象

来自分类Dev

C ++在自定义线程中创建cef对象

来自分类Dev

组合框中的C#自定义对象

来自分类Dev

在C ++中增加自定义对象数组的大小

来自分类Dev

排序自定义DateTime C#

来自分类Dev

C ++排序自定义函数

来自分类Dev

自定义排序算法C ++

来自分类Dev

自定义排序 LINQ C#

来自分类Dev

按每个向量的大小对c ++中向量的向量进行排序

来自分类Dev

C#-使用自定义的CompareTo方法对List <SomeClass>进行排序

来自分类Dev

使用C / C ++中的用户定义函数对大型向量进行排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

c#的排序集如何与自定义对象一起使用?

来自分类Dev

在Android中对自定义对象的数组列表进行排序

来自分类Dev

C ++对向量向量中的多列进行排序

Related 相关文章

热门标签

归档