Мне интересно, как долго действительна ссылка на значение внутри контейнера Qt, особенно QHash
или QMap
. Под действительным я подразумеваю, что оно гарантированно будет по-прежнему указывать на правильное местоположение внутри карты/хэша после вставки или удаления других элементов.
Приведем следующий код:
QHash<char,int> dict; // or QMap<char,int> dict;
dict.insert('a', 1);
int& val(dict['a']);
dict.insert('b', 2);
val = 3; // < will this work or lead to a segfault
Будет ли установка значения в последней строке корректно обновлять значение, связанное с a
на 3
или это приведет к segfault или будет неопределено (так что иногда работает, иногда segfault, в зависимости от того, была ли внутренняя реорганизация структуры данных, например, изменение размера массива хэш-таблицы). Одинаково ли поведение для QMap
и QHash
, или одно будет работать, а другое нет?