我知道std::map我们有一个键和一个相应的映射值.
现在在我提到的数据类型中,键将是类型std::set<long> 或 std::pair<long, long>.因此,这是有效的,请记住,地图值存储在键的排序值的基础上.那么,std::map<std::set<long>, double> AND std:map< std::pair<long, long>, double>有效吗?
std::set有一个operator<在两组相同类型之间进行字典比较.所以是的,一个std::set<T>可以是地图的有效密钥.
一个std::pair<T1,T2>也有一个operator<实施的逐一比较,因此std::map<std::pair<T1, T2>, T3>也将是有效的当且仅当两者T1并T2有一个小于比较operator<实施严格的弱序.所以要求更严格.无论T1与T2需要相比是一个地图的钥匙,但他们并不需要它来形成一个有效的对.因此,有效对不一定形成地图的有效密钥.另一方面,您可以使用自己的比较条件实例化地图.
std::map<std::pair<T1, T2>, T3, Comp> m;
Run Code Online (Sandbox Code Playgroud)