Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Изменение ассоциативных контейнеров


Автор: xbarmaglot 24.9.2015, 12:12
В stl после поиска нужного значения возвращается итератор на элемент контейнера.
Его значение можно менять. А почему в QT возвращается не константный итератор, но значение менять нельзя?

Если постоянно доставать элемент из него, менять и потом класть обратно, то слишком накладно получается.

P.S. В частности я имею ввиду QSet

Автор: Sajtran 25.9.2015, 18:58
особенность реализации мапы через множество
ключ менять нельзя (иначе нарушится порядок сортировки), а вот значение различными приведениями - можно

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Izmeneniye-assotsiativnykh-konteynerov-id5603bf17ae201551208b4567#findElement_E7045_56056f1aae20152819b9cd88_0

Автор: math64 28.9.2015, 15:01
Я обычно в мапы и другие контейнеры складываю указатели, а не сами объекты. Тогда проблем с модификацией нет. Но при удалении контейнера и удалении указателя на объект из контейнера нужно не забыть удалить сами объекты, автоматом это не будет происходить.

Автор: borisbn 30.9.2015, 12:29
Цитата(math64 @  28.9.2015,  15:01 Найти цитируемый пост)
Тогда проблем с модификацией нет. Но при удалении контейнера и удалении указателя на объект из контейнера нужно не забыть удалить сами объекты, автоматом это не будет происходить. 

shared_ptr же

Автор: xbarmaglot 30.9.2015, 17:32
понятно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)