我想使用带有以下自定义键的标准地图:
struct ParserKey{
ParserKey(uint16_t compno,
uint8_t resno,
uint64_t precinctIndex) : compno_(compno),
resno_(resno),
precinctIndex_(precinctIndex)
{
}
uint16_t compno_;
uint8_t resno_;
uint64_t precinctIndex_;
};
Run Code Online (Sandbox Code Playgroud)
不过,没有明显的方式来订购钥匙。这些键可以订购吗?或者我是否需要不同的关联集合?
如果您不关心具体顺序而只想满足排序要求,则一种常见且简单的模式是std::tie与比较实例的所有类成员一起使用,然后比较这些结果。
std::tie创建std::tuple对成员的引用,并std::tuple实现operator<按字典顺序比较其元素(在本例中为对象的成员)。
在您的情况下,使用 member operator<:
bool operator<(const ParserKey & other) const
{
return std::tie(compno_, resno_, precinctIndex_) <
std::tie(other.compno_, other.resno_, other.precinctIndex_);
}
Run Code Online (Sandbox Code Playgroud)
实例https://godbolt.org/z/v433v54jz
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |