Сообщение 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.
К>>>И с 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.
К>>>И с 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.