Как сказано в заголовке, как я могу получить указатель конкретной пары с моей карты и поместить его в вектор? Вот мой код:

std::map<std::string, Object*> scene_objects;
std::vector<std::pair<std::string, Object*>*> scene_objects_layers;

scene_objects_layers.insert(scene_objects_layers.begin(), scene_objects.find(*object->getName())); //not working
c++
-3
Petar Putar Visnjic 26 Ноя 2016 в 01:06

2 ответа

Лучший ответ

std::map::find возвращает итератор . Итератор можно разыменовать с помощью унарного оператора *. Это даст вам ссылку на value_type карты. Вы можете взять его адрес, чтобы создать указатель .

Таким образом ,

    &*scene_objects.find(object->getName())

Создаст нужный вам указатель.

0
n. 'pronouns' m. 26 Ноя 2016 в 08:25

Вы не можете. Если вы прочтете документацию map, то увидите, что ничего не возвращает указатели на пары. И на самом деле нет ничего, что возвращало бы ссылки на пары с полезным временем жизни.

Так что либо сохраните фактические пары в своем векторе (есть ли реальная причина использовать указатели на пары?), Либо создайте копии пар с помощью new pair....

-1
Jason C 25 Ноя 2016 в 22:29