C ++代码中的运行时错误

时间:2015-05-29 11:57:22

标签: c++ c++11

我在C ++代码中遇到运行时错误。我给出了我的源代码错误消息。需要帮忙!提前谢谢。

源代码:

#include <map>
#include <cstdio>
using namespace std;

class Pair{
    public:
    int x;
    int y;
};

map < Pair , int > mapper;

int main(){
    Pair a;
    a.x = 8;
    a.y = 9;
    mapper[a] = 1; // Here i get Run-Time-Error
    return 0;
}

错误讯息:

c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|note:   'const Pair' is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Alloc>'|

1 个答案:

答案 0 :(得分:2)

错误是你必须定义一个方法来提供Pairs之间的排序。 map不知道如何比较对象。

一个例子:

#include <map>
#include <cstdio>
using namespace std;

class Pair{
public:
  int x;
  int y;
};

bool operator<(const Pair& l, const Pair& r) {
  return l.x < r.x;
}


map < Pair , int > mapper;

int main(){
  Pair a;
  a.x = 8;
  a.y = 9;
  mapper[a] = 1;
  return 0;
}

在此示例中,使用x的值比较Pairs,但您可以根据需要提供函数。