我在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>'|
答案 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,但您可以根据需要提供函数。