QMap/QHash operator[] возвращает действительность ссылки

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

6
задан Janick Bernet 30 October 2011 в 19:23
поделиться