为什么STL算法find()在地图上不起作用?

Nik*_*ach 2 c++ stl map

是否有任何解释为什么find()算法不适用于地图,而且必须使用map :: find?

MSN*_*MSN 17

  1. 它确实适用于地图,但您需要与map::value_type(即std::pair<const map::key_type, map::mapped_type>)键进行比较,而不是键类型.
  2. 因为map.find接受一个键并返回一个键/值对迭代器.

  • 根据标准部分23.3.1,对于std :: map <Key,T,Compare,Allocator>,key_type是Key,但value_type是pair <const Key,T>.原因是一旦插入了值,插入的键必须是不可变的,否则可能会破坏顺序不变量 (2认同)