哪个元素将从std :: multimap :: find返回?

ida*_*hmu 14 c++ stl multimap multiset

很可能这个问题是重复的,但我找不到它的引用.

我正在查看std :: multiset :: find&std :: multimap :: find函数,我想知道如果多次插入特定键,将返回哪个元素?

从描述:

请注意,此函数将迭代器返回到单个元素(可能是多个等效元素)

是保证单个元素第一个插入的还是随机的?

背景

我问的原因是我正在实现像类这样的multipmap:

typedef std::vector<Item> Item_vector;

class Item
{
  string m_name;
};

class MyItemMultiMap
{
public:

  // forgive me for not checking if key exist in the map. it is just an example.

  void add_item( const Item& v ) { m_map[v.m_name].push_back(v); }

  // is returning the first item in the vector mimic std::multimap::find behavior?
  Item& get_item( const string& v ) { return m_map[v][0]; } 

private:
  std::map<string,Item_vector> m_map;
};
Run Code Online (Sandbox Code Playgroud)

我想get_item()完全像std::multimap::find.可能吗?如果是这样,它将如何实施?

Car*_*ijn 8

如果存在多个,则find方法可以返回任意一个,尽管您的STL实现可能确实只给出了第一个.

使用'lower_bound'方法更安全,++从那里迭代(参见std :: multimap :: lower_bound).请注意,如果您要查找的内容不存在,'lower_bound'会将ref返回给另一个元素!