使用C ++自定义地图

时间:2015-07-06 17:30:42

标签: c++ stl hashmap hashtable

我想创建一个自定义地图。我不想比较密钥,我想在地图上找到第二个元素,我真的不知道如何解释这个,所以这里有一些代码,我希望能解释我想要的东西:

#include <iostream>
#include <map>

struct box {
    int size, color, price, position;
};

struct custom_compare {
    bool operator()(const box& lhs, const box& rhs) const {
        if(lhs.size  != rhs.size)  return lhs.size < rhs.size;
        if(lhs.color != rhs.color) return lhs.color < rhs.color;
        if(lhs.price != rhs.price) return lhs.price < rhs.price;
        return lhs.position < rhs.position;
    }
};

int main() {                   //here, box isn't the key
    std::map<std::string, box, custom_compare> box_map;
    box_map["my box"] = {1,5,200,1};
    box_map["jose's box"] = {3,1,300,2};
    box_map["maria's box"] = {2,4,100,3};
    // The problem is that the custom_compare get 'box_map.first', not 'box_map.second'
    // I wish map compare struct box, not string
}

我无法将结构放在键上,我需要关联性。

那么,有没有办法根据第二个元素(而不是键)自定比较地图?

0 个答案:

没有答案