170 похожих чатов

На странице https://en.cppreference.com/w/cpp/container/unordered_map/insert написано такое: > If the insertion is successful,

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 снова можно разыменовывать.

Правильно, или что-то другое тут вообще?

9 ответов

13 просмотров

Стикер

Sergey-D Автор вопроса

Стикер

Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адреса элементов в MAP зашиваться. 0) ссылку на элемент можно всегда быстро получить по ключу (80% операций в этом состоит) 1) если нужны постоянные адреса элементов, элементы можно выделять ОТДЕЛЬНО , и в словарях хранить указатели на них 2) Один map может быть заменён на другой из std или даже из других библиотек - эти все гарантии могут нарушиться.

Ilya Zviagin
Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адре...

0) Не прокатит, когда нужно что-то вроде мульти-индексп

Ilya Zviagin
Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адре...

1) а собственно зачем отдельно, если есть гарантии на стабильность ссылок как для map так и для unordered map в std А если хочешь менять контейнер, то понятное дело его гаранттии должны быть как минимум такими же как у изначального варианта (если ты конечно пользовался этими гарантиями)

Aleksander Spichak
1) а собственно зачем отдельно, если есть гарантии...

Не знаю, я когда архитектуру проектирую вообще об этом не думаю. Не нужны прямые указатели в 80%

Ilya Zviagin
Не знаю, я когда архитектуру проектирую вообще об ...

Ну так на уровне архитектуры об этом думать и не надо

Sergey-D Автор вопроса
Ilya Zviagin
Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адре...

это тоже всё ясно. вопрос был о конкретной структуре

Sergey-D Автор вопроса
Ilya Zviagin
Я это ПОНИМАЮ, я О ДРУГОМ, не стоит вообще на адре...

не ради спора, просто случайно наткнулся на релевантную цитату (извините за некропост, но вдруг кому-то интересно) > 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/ Т.е. видимо всё-таки есть случаи, когда полезно использовать ссылки на элементы в таблицах, если даже фб такое в своей библиотеке сделал.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта