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 ответов

12 просмотров

Стикер

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта