Информация об изменениях

Сообщение Re[4]: Сранивание просто мэпов и хешмэпов от 01.03.2017 13:09

Изменено 01.03.2017 13:10 Кодт

Re[4]: Сранивание просто мэпов и хешмэпов
Здравствуйте, uzhas, Вы писали:

К>>>И с multimap и multiset та же проблема — в пределах одного класса эквивалентности элементы лежат как угодно.

V>>Это уже не так и начиная с С++11 порядок всегда детермининован.

U>и каким образом он детерминирован? думаю, что все же порядок одниаковых элементов не детерминирован

U>что нашел интересного:

23.2.4, таблица 102 — Associative container requirements

В черновике C++11 про a_eq.insert есть оговорка, что эквивалентный ключ добавляется в конец диапазона либо как можно ближе справа от итератора подсказки. А про a_eq.emplace такой оговорки нет. И более того, прямо сказано, что реализации могут игнорировать подсказку, то есть, добавят куда бог пошлёт.

а уже в черновике C++14 этот косяк поправили, и emplace ведёт себя так же, как и insert.
Re[4]: Сранивание просто мэпов и хешмэпов
Здравствуйте, uzhas, Вы писали:

К>>>И с multimap и multiset та же проблема — в пределах одного класса эквивалентности элементы лежат как угодно.

V>>Это уже не так и начиная с С++11 порядок всегда детермининован.

U>и каким образом он детерминирован? думаю, что все же порядок одниаковых элементов не детерминирован

U>что нашел интересного:

23.2.4, таблица 102 — Associative container requirements

В черновике C++11 про a_eq.insert есть оговорка, что эквивалентный ключ добавляется в конец диапазона либо как можно ближе слева от итератора подсказки. А про a_eq.emplace такой оговорки нет. И более того, прямо сказано, что реализации могут игнорировать подсказку, то есть, добавят куда бог пошлёт.

а уже в черновике C++14 этот косяк поправили, и emplace ведёт себя так же, как и insert.