Скорее всего, этот вопрос является дубликатом, но я не мог найти ссылку на него.
Я смотрю std:: multiset:: find и std:: multimap:: find, и мне было интересно, какой элемент будет возвращен, если несколько раз был вставлен конкретный ключ?
Из описания:
Обратите внимание, что эта функция возвращает итератор в один элемент (из возможно несколько эквивалентных элементов)
Вопрос
Гарантируется ли, что одиночный элемент является первым, вставленным, или он случайный?
Фон
Причина, по которой я спрашиваю, заключается в том, что я реализую multmap как класс:
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
. Является ли это возможным? если да, то как это будет реализовано?