Как вставить пару в карту

У меня есть следующая структура карты: map < pair < int,int >, object* > и я хочу вставить в него.

Как я сделал бы это, так как я пытаюсь вставить пару и объект, и я должен сделать пару из этого?

Если я создаю новое парное использование make_pair() из пары и объекта, который я имею? Если так, Вы могли сообщить мне, как сделать это?

12
задан Lightness Races with Monica 4 December 2014 в 23:58
поделиться

2 ответа

object * myObject = // get an object somehow
myMap.insert(std::make_pair(std::make_pair(1,2), myObject));

или

typedef map<pair<int, int>, object *> MapType;
object * myObject = // get an object somehow
myMap.insert(MapType::value_type(std::make_pair(1,2), myObject));
20
ответ дан 2 December 2019 в 04:53
поделиться

Есть два способа:

typedef std::map<int,Object> map_t;
map_t map;
Object obj;

std::pair<map_t::iterator, bool> result = map.insert(std::make_pair(1,obj)); // 1

map[1] = obj; // 2
  1. Работает только если ключ еще не присутствует, итератор указывает на пару со значением ключа, а bool указывает, был ли он вставлен или нет.

  2. Проще, но если он еще не существует, объект сначала конструируется по умолчанию, а затем присваивается, вместо того, чтобы быть построенным по копии

Если вам не нужно беспокоиться о производительности, просто выберите, хотите ли вы стереть предыдущую запись.

1
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: