Я хочу получить объект от set<Node>
, но я думаю, что моя функция дает мне копию этого объекта. Как это исправить?Получение объекта из итератора
Node findByNum(int n){
for (set<Node>::iterator it = this->children.begin();it != this->children.end(); it++){
if ((*it).num == n){
return (*it);
}
}
}
Вставка/удаление из 'set' делает недействительными ни итераторы, ни ссылки (cf [здесь] (http://en.cppreference.com/w/cpp/container/set/insert)). Работа с 'set' (включая интеллектуальные указатели) бессмысленна. –
m8mble
@ m8mble: действительно. set> по-прежнему имеет смысл, если вы вообще не хотите, чтобы выполнялось копирование (или если Node не копируется). Ему просто нужен пользовательский компаратор, чтобы он не сравнивал указатели. –
Ishamael
Извините, но это неверно. Вы можете создать 'set' из типов, не подлежащих копированию, используя ['set :: emplace'] (http://en.cppreference.com/w/cpp/container/set/emplace). – m8mble