【发布时间】:2014-02-02 10:02:38
【问题描述】:
这个问题很可能是重复的,但我找不到对它的引用。
我正在查看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;
};
我希望 get_item() 与 std::multimap::find 一样工作。可能吗?如果有,如何实施?
【问题讨论】: