Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Change Log

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 41. Boost.Unordered

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Review Version

Первоначальная версия обзора для обзора, проведенного с 7 декабря 2007 года по 16 декабря 2007 года.

1.35.0 Add-on - 31st March 2008

Неофициальный выпуск, загруженный в хранилище, для использования с Boost 1.35.0. Включил многие предложения из обзора.

  • Улучшена портативность благодаря ускоренному регрессионному тестированию.
  • Исправьте много опечаток и более четкий текст в документации.
  • Исправьте плавающую точку в<std::size_t>преобразование при расчете размеров от максимального коэффициента нагрузки и используйте<double>в расчете для большей точности.
  • Исправьте некоторые ошибки в примерах.

Boost 1.36.0

Первое официальное освобождение.

  • Перестроить внутренние.
  • Семантика перемещения - полная поддержка, когда доступны ссылки на rvalue, эмулируемые с использованием сокращенной версии библиотеки Adobe Move, когда они отсутствуют.
  • Замените поддержку, когда доступны ссылки на rvalue и вариадный шаблон.
  • Более эффективное распределение узлов, когда доступны ссылки на значение r и вариадный шаблон.
  • Добавлены операторы равенства.

Boost 1.37.0

  • Перегрузка переименования<emplace>с подсказкой, до<emplace_hint>, как указано вn2691.
  • Установить<<boost/unordered/unordered_map_fwd.hpp>>и<<boost/unordered/unordered_set_fwd.hpp>>.
  • Переместите всю реализацию внутри<boost/unordered>, чтобы помочь модуляризации и, надеюсь, облегчить отслеживание изменений в подрывной деятельности.

Boost 1.38.0

  • Использование<boost::swap>.
  • Билет 2237: Докажите, что операторы равенства и неравенства не определены для двух объектов, если их предикаты равенства не эквивалентны. Спасибо Даниэлю Крüглер.
  • Билет 1710: Используйте большой список простых чисел. Спасибо Торстену Оттосену и Hervé Brönnimann.
  • Используйтевыровненное хранилищедля хранения типов. Это меняет способ использования распределителя для построения узлов. Он использовался для построения узла с двумя вызовами к методу распределителя<construct>— один раз для указателей и один раз для значения. Теперь он строит узел с помощью одного вызова, а затем строит значение, используя конструкцию на месте.
  • Добавьте поддержку списков инициализаторов C++0x, где они доступны (в настоящее время только g++ 4.4 в режиме C++0x).

Boost 1.39.0

  • Билет 2756: Избегайте предупреждений на Visual C++ 2009.
  • Некоторые другие незначительные внутренние изменения в реализации, испытаниях и документации.
  • Избегайте ненужных копий<operator[]>.
  • Билет 2975: Исправьте длину списка простых чисел.

Boost 1.40.0

  • Билет 2975: Храните основной список в качестве последовательности препроцессора, чтобы он всегда получал правильную длину, если он снова изменится в будущем.
  • Билет 1978: Внедрение<emplace>для всех компиляторов.
  • Билет 2908,Билет 3096: Некоторые обходные пути для старых версий борланда, включая добавление явных деструкторов ко всем контейнерам.
  • Билет 3082: Отключить неправильные предупреждения Visual C++.
  • Улучшенная конфигурация для функций C++0x, когда заголовки недоступны.
  • Создайте меньше ведер по умолчанию.

Boost 1.41.0 - Major update

  • Оригинальная версия широко использовала макросы, чтобы обойти плохую поддержку шаблонов старых компиляторов. Но поскольку я больше не поддерживаю эти компиляторы, и использование макросов стало бременем для обслуживания, было переписано использование шаблонов вместо макросов для классов реализации.
  • Контейнер objcet теперь меньше благодаря использованию<boost::compressed_pair>для EBO и немного отличающегося буфера функций - теперь вместо указателя члена используется болт.
  • Ведра распределяются лениво, что означает, что создание пустого контейнера не выделяет никакой памяти.

Boost 1.42.0

  • Поддержка инстанцирования контейнеров с неполными типами значений.
  • Уменьшение количества предупреждений (в основном в тестах).
  • Улучшенная совместимость кодежера.
  • Билет 3693: Добавьте<erase_return_void>в качестве временного обходного пути для тока<erase>, который может быть неэффективным, потому что он должен найти следующий элемент, чтобы вернуть итератор.
  • Добавьте шаблонный поиск перегрузки для совместимых ключей.
  • Билет 3773: Добавить недостающий<std>квалификатор<ptrdiff_t>.
  • Некоторые изменения форматирования кода вписываются почти во все строки в 80 символов.

Boost 1.43.0

Boost 1.45.0

  • Исправьте ошибку при вставке в<unordered_map>или<unordered_set>с помощью итераторов, которые возвращают<value_type>копией.

Boost 1.48.0 - Major update

Это серьезное изменение, которое было преобразовано в использование Boost. Move эмулирует движения и более соответствует стандарту C++11. См. раздел«Соответствие»для деталей.

Контейнер теперь соответствует требованиям сложности C++11, но для этого используется немного больше памяти. Это означает, что<quick_erase>и<erase_return_void>больше не требуются, они будут удалены в будущей версии.

Поддержка C++11 привела к некоторым изменениям:

  • Сравнение равенства было изменено на спецификацию C++11. В контейнере с эквивалентными ключами элементы в группе с равными ключами должны быть в одном порядке, чтобы считаться равными, теперь они могут быть перестановкой друг друга. Старое поведение определяет макрос<BOOST_UNORDERED_DEPRECATED_EQUALITY>.
  • Поведение свопа отличается, когда два контейнера, подлежащие обмену, имеют неравные распределители. Раньше он выделял новые узлы, используя соответствующие распределители, теперь он меняет распределители, если распределитель имеет структуру члена<propagate_on_container_swap>, так что<propagate_on_container_swap::value>верно.
  • Функции распределителя<construct>и<destroy>называются необработанными указателями, а не типом распределителя<pointer>.
  • <emplace>используется для эмуляции вариадных пар конструкторов, которые появились в ранних черновиках C++0x. Поскольку они были удалены, это больше не так. Он эмулирует новые<piecewise_construct>парные конструкторы - только вам нужно использовать<boost::piecewise_construct>. Использовать старую эмуляцию вариадных констуркторов определяют<BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT>.

Boost 1.49.0

  • Исправьте предупреждение из-за случайного нечетного назначения.
  • Чуть лучше сообщения об ошибках.

Boost 1.50.0

  • Установить равенство<unordered_multiset>и<unordered_multimap>.
  • Билет 6857: Реализация<reserve>.
  • Билет 6771: Избегать предостережения<-Wfloat-equal>.
  • Билет 6784: Исправьте определенный код Sun.
  • Билет 6190: Предупреждение<-Wshadow>.
  • Билет 6905: Сделайте пространства имен в макросах совместимыми с<bcp>пользовательскими пространствами имен. Исправлено Люком Эллиоттом.
  • Удалите некоторые из меньшего простого числа ведер, так как они могут сделать столкновения вполне вероятными (например, кратные 5 очень распространены, потому что мы использовали основание 10).
  • На старых версиях Visual C++ используйте реализацию библиотеки контейнеров<allocator_traits>, так как это с большей вероятностью сработает.
  • На машинах с 64-битным std::size_t используйте мощность 2 ведра, с функцией хеширования Томаса Ванга, чтобы выбрать, какой из них использовать. Модуль очень медленный для 64-битных значений.
  • Некоторые внутренние изменения.

Boost 1.51.0

  • Исправить проблему построения/разрушения при использовании компилятора C++11 с помощью распределителя C++03 (#7100).
  • Удалить<try..catch>для поддержки компиляции без исключений.
  • Настройте SFINAE, чтобы попытаться настроить g++ 3.4#7175.
  • Обновлено для использования новых макросов конфигураций.

Boost 1.52.0

  • Быстрее присваивать, который присваивает существующим узлам, где это возможно, а не создавать совершенно новые узлы и копировать конструирование.
  • <erase_range>#7471.
  • Обратили некоторые внутренние изменения в способ создания узлов, особенно для компиляторов C++11. «Конструкция» и «уничтожение» должны работать немного лучше для распределителей C++11.
  • Немного упростила реализацию. Надеюсь, покрепче.

Boost 1.53.0

  • Удалите поддержку старых достандартных вариадных парных конструкторов и реализацию равенства. Оба были обесценены после повышения 1.48.
  • Удалите использование устаревших макросов конфигураций.
  • Больше внутренних изменений в реализации, включая гораздо более простую реализацию<erase>.

Boost 1.54.0

  • Методы Марка, указанные в стандарте как<noexpect>. Больше будет в следующем выпуске.
  • Если известно, что хеш-функция и предикат равенства имеют назначение или конструкцию небровейного перемещения, используйте их.

Boost 1.55.0

  • Избегайте некоторых предупреждений#8851,#8874.
  • Избегайте разоблачения некоторых деталей. АДЛ на итераторах.
  • Следуйте стандарту, используя только методы построения и уничтожения распределителей для создания и уничтожения сохраненных элементов. Не используйте их для внутренних данных, таких как указатели.

Boost 1.56.0

  • Исправьте некоторые затененные переменные предупреждения#9377.
  • Исправьте использование распределителя в документации#9719.
  • Всегда используйте простое число ведер для целых чисел. Исправляет регрессию производительности при вставке последовательных целых чисел, хотя делает другие применения медленнее#9282.
  • Только конструировать элементы с помощью распределителей, как указано в стандарте C++11.

Boost 1.57.0

  • Исправьте<pointer>типдеф в итераторах#10672.
  • Предупреждение об опасности (GitHub #2).

Boost 1.58.0

  • Удалите ненужный параметр шаблона из итераторов.
  • Переименовать частный<iterator>типдеф в некоторые классы итераторов, так как он путает некоторые классы признаков.
  • Исправьте назначение перемещения с помощью государственных распределителей propagate_on_container_move_assign (#10777).
  • Исправьте редкое исключение в задании на переезд.
  • Исправьте потенциальный перелив при расчете количества ведер для выделения (GitHub #4).

Boost 1.62.0

  • Удалить из употребления обездоленное<boost::iterator>.
  • Удалите<BOOST_NO_STD_DISTANCE>обходной путь.
  • Удалить<BOOST_UNORDERED_DEPRECATED_EQUALITY>предупреждение.
  • Упрощенная реализация задания, фиксирует исключение проблемы безопасности для<unordered_multiset>и<unordered_multimap>. Может быть немного медленнее.
  • Прекратите использовать возвратное значение SFINAE, с которым у некоторых старых компиляторов есть проблемы.

PrevUpHomeNext

Статья Change Log раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 41. Boost.Unordered может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 41. Boost.Unordered ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:52:48/0.032294034957886/1