在std :: map中找到struct作为值

时间:2017-09-25 01:16:46

标签: c++

我正在尝试使用 typedef struct myStruct { int x; int y; }MyStruct; MyStruct instace; instace.x = 0; instace.y = 1; map<unsigned int, myStruct> myMap; myMap[0] = instace; if(myMap.count(instace) == 1) { //do something } 在字典中查找值,这是一个自定义结构。以下代码将无法编译

no instance of overloaded function "std::map<_Kty, _Ty, _Pr, _Alloc>::count 
[with _Kty=unsigned int, _Ty=myStruct, _Pr=std::less<unsigned int>, 
_Alloc=std::allocator<std::pair<const unsigned int, myStruct>>]" matches the 
argument list

这是我得到的错误

struct comparer 
{
    bool operator()(MyStruct const& Left, MyStruct const& Right) const {
    return (Left.x == Right.x && Left.y == Right.y);
    }
};

map<unsigned int, myStruct, comparer> myMap;

我认为编译器不知道如何比较我的结构。地图声明中的第三个参数采用比较函数,我尝试创建一个比较函数并将其传递给声明中的第三个参数,如下所示

myMap.count()

但是当我执行 <!-- named route --> <nuxt-link :to="{ name: 'user', params: { userId: 123 }}">User</nuxt-link> <!-- with query, resulting in `/register?plan=private` --> <nuxt-link :to="{ path: 'register', query: { plan: 'private' }}">Register</nuxt-link> 时,我会收到类似错误。

我用各种可能的方式搜索谷歌我可以描述问题,但我找不到答案。有人能告诉我如何解决这个问题吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

查看std::map::count,count获取密钥并返回与该密钥关联的元素数。这意味着您的代码应该是:

Microsoft.ReportViewer.WebForms