我想创建一个自定义地图。我不想比较密钥,我想在地图上找到第二个元素,我真的不知道如何解释这个,所以这里有一些代码,我希望能解释我想要的东西:
#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
}
我无法将结构放在键上,我需要关联性。
那么,有没有办法根据第二个元素(而不是键)自定比较地图?