为什么std::set中有key_type和value_type

Why are there key_type and value_type in std::set

看完这个link: https://en.cppreference.com/w/cpp/container/set,我发现在class std::set。看来他们是一回事。

好吧,这可能是个愚蠢的问题,但我还是想问问为什么。一个还不够吗?为什么有两种类型?

所有stl容器都有value_type,所有关联容器(包括std::setstd::mapstd::multisetstd::multimap)和无序关联容器(包括 std::unordered_setstd::unordered_mapstd::unordered_multisetstd::unordered_multimap)具有 key_type,这意味着您可以对这些容器执行一些常规处理(尤其是模板)与成员类型。