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.可能吗?如果是这样,它将如何实施?
如果存在多个,则find方法可以返回任意一个,尽管您的STL实现可能确实只给出了第一个.
使用'lower_bound'方法更安全,++从那里迭代(参见std :: multimap :: lower_bound).请注意,如果您要查找的内容不存在,'lower_bound'会将ref返回给另一个元素!