pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid. (since C++17)
Понимаю, что из таблицы можно extract-ить ноды. И если на извлеченную ноду взять указатель, а потом ноду вставить в unordered_map, то прежний указатель разыменовывать нельзя. Но о чем говорит вторая часть? Про подобный юзкейс что ли?
1. Добавили что-то в таблицу.
2. Взяли на полученное итератор it.
3. Вытащили ноду из таблицы. Тут итератор it невалидный.
4. Вставили ноду обратно в ту же таблицу. Теперь итератор it снова можно разыменовывать.
Правильно, или что-то другое тут вообще?
Стикер
Стикер
Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адреса элементов в MAP зашиваться. 0) ссылку на элемент можно всегда быстро получить по ключу (80% операций в этом состоит) 1) если нужны постоянные адреса элементов, элементы можно выделять ОТДЕЛЬНО , и в словарях хранить указатели на них 2) Один map может быть заменён на другой из std или даже из других библиотек - эти все гарантии могут нарушиться.
0) Не прокатит, когда нужно что-то вроде мульти-индексп
1) а собственно зачем отдельно, если есть гарантии на стабильность ссылок как для map так и для unordered map в std А если хочешь менять контейнер, то понятное дело его гаранттии должны быть как минимум такими же как у изначального варианта (если ты конечно пользовался этими гарантиями)
Не знаю, я когда архитектуру проектирую вообще об этом не думаю. Не нужны прямые указатели в 80%
Ну так на уровне архитектуры об этом думать и не надо
это тоже всё ясно. вопрос был о конкретной структуре
не ради спора, просто случайно наткнулся на релевантную цитату (извините за некропост, но вдруг кому-то интересно) > With F14, we have condensed this list to one simple choice: If you don’t keep long-lived references to entries, start with folly::F14FastMap/Set. Otherwise, start with folly::F14NodeMap/Set. https://engineering.fb.com/2019/04/25/developer-tools/f14/ Т.е. видимо всё-таки есть случаи, когда полезно использовать ссылки на элементы в таблицах, если даже фб такое в своей библиотеке сделал.
Обсуждают сегодня