我只是想知道制作一个像这样的数据结构是否是个好主意
std::map< std::pair<int,int>,std::string >
只是想知道如何在内部订购这些对......:S
谢谢!
将使用对operator<
(默认比较操作std::map
)对这些对进行排序,其中
回报:
x.first < y.first || (!(y.first < x.first) && x.second < y.second)
(C++03, 20.2.2/6)
请注意,使用一对作为映射键可能会让人感到困惑,尤其是在使用映射迭代器时(it->first.first
获取键对的第一个元素看起来很荒谬)。但在某些情况下,这可能比为密钥创建一个全新的结构更容易。
与所有事物一样,请谨慎使用,如果它不是直截了当且易于理解,那么最好找到一种不同的方法来完成它。
你可以。在我看来,尽管您应该做一些比这更具表现力的事情,因为std::pair
这不是为此而生的。例如,如果您想通过哈希将字符串存储在地图中,那么您可以执行以下操作:
struct Hash {
int hash_low;
int hash_high;
bool operator<(const Hash& other) const;
};
然后使用map<Hash,string>
而不是map<pair<int,int>,string>
.
如果您希望哈希表有两个索引,那么您应该查看Boost::multiindex容器。
至于回答你的问题,如果你能处理其他人指出的限制,为什么不呢?我始终支持任何清晰、易于使用且适合手头问题目的的解决方案。