具有自定义value_type的C ++映射

Tim*_*mmm 1 c++ dictionary

对于std::map<K, V>默认值value_typestd::pair<const K, V>。有没有使用自定义的方法value_type?据我所知你做不到。

编辑:要清楚,自定义value_type可能是这样的:

struct Edge {
  K from;
  V to;

  int calculate_thing();
  void print_debug();
};
Run Code Online (Sandbox Code Playgroud)

例如,假设我有一些不想更改的现有功能:

template<typename It>
void processEdges(It begin, It end) {
   for(auto it = begin; it != end; ++it) {
     do_stuff(it->from);
     do_more_stuff(it->calculate_thing());
  }
}
Run Code Online (Sandbox Code Playgroud)

Hol*_*Cat 7

总是这样std::pair<const K, V>,您无法更改。

如果您需要一个custom value_type,则可以使用std::set(最好与透明的comaprator一起使用)。

  • 是的`std :: set`是一个选项,但是并不完全相同-例如,如果您想更改一个值,则必须将其删除然后再次插入。界面也不是很好。 (2认同)
  • @Timmmm对于要更改密钥的地图也是如此!对于地图和集合,您只能更改该值。 (2认同)