是std :: map <std :: set <long>,double> AND std:map <std :: pair <long,long>,double> C++中的有效数据类型?

use*_*964 2 c++ map

我知道std::map我们有一个键和一个相应的映射值.

现在在我提到的数据类型中,键将是类型std::set<long>std::pair<long, long>.因此,这是有效的,请记住,地图值存储在键的排序值的基础上.那么,std::map<std::set<long>, double> AND std:map< std::pair<long, long>, double>有效吗?

jua*_*nza 6

std::set有一个operator<在两组相同类型之间进行字典比较.所以是的,一个std::set<T>可以是地图的有效密钥.

一个std::pair<T1,T2>也有一个operator<实施的逐一比较,因此std::map<std::pair<T1, T2>, T3>也将是有效的当且仅当两者T1T2有一个小于比较operator<实施严格的弱序.所以要求更严格.无论T1T2需要相比是一个地图的钥匙,但他们并不需要它来形成一个有效的对.因此,有效对不一定形成地图的有效密钥.另一方面,您可以使用自己的比较条件实例化地图.

std::map<std::pair<T1, T2>, T3, Comp> m; 
Run Code Online (Sandbox Code Playgroud)