хочу эти структурки переложить в мапу
но они могут быть тяжелыми и вроде как можно хранить ссылки в мапах через std::reference_wrapper<Foo>
собственно вопрос:
как правильно переложить Foo в мапу ?
у меня получилось как-то так, но мне кажется, что я не правильно все делаю(в форе перебираю структурки и копирую)
std::vector<Foo> array_of_foo;
std::map<int, std::reference_wrapper<Foo>> map_of_foo;
for(auto item: array_of_foo){
map_of_foo.emplace(item._some_int, std::ref(item));
}
храни в мапе индекс в массиве
Нафига тебе reference wrapper — тут достаточно просто указателя
Не хочу использовать указатели
ага, храни, а потом добавляй в вектор, а потом произойдет переаллокация и ты получих хуй
Это тот случай, когда надо себя заставить...
ты херню советуешь, не надо хранить указатели на элементы вектора, это опасно
Если произойдёт переаллокация, по-любому пздц настанет
Не, индексы тоже можно — и лучше.
если хранить индексы на элементы массива все будет заибись
Я как раз хотел уточнить про это вот "ПЕРЕЛОЖИТЬ" Тут перекладыванием и не пахнет даже. Так что же тебе надо-то?
О, крутое решение, спасибо
Нет, тут ничего не копируется
Ну вообще - у меня не будет переаллокаций, так что это более менее именно переложить
а когда я в форе делаю auto item, он же копирует элементы в item, нет?
тогда не работает
Тогда показывай код, а не сказки.
Обсуждают сегодня