Мне было интересно, как долго действительна ссылка на значение внутри контейнера 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
, или одно будет работать, а другое нет?