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

Boost.MultiIndex Documentation - Release notes

Boost , , Boost.MultiIndex Documentation - Index

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

Boost.MultiIndex Release notes



Contents

Boost 1.60 release

  • Исправлена проблема совместимости сQtиз-за необязательного определения макроса с именем<foreach>в этой структуре.
  • Ремонтные работы.

Boost 1.59 release

Boost 1.58 release

  • Эффективность поисковых операций улучшилась в ситуациях, когда они включают генерацию временных значений<key_type>. Рассмотрим, например, следующий код:
    <
    typedefmulti_index_container<
     std::string,
     indexed_by<
       ordered_unique<identity<std::string>>
     >
    >multi_t;
    ...
    multi_tm=...;
    m.find("boost");// passed a const char*, not a std::string
    
    >
    В предыдущих версиях библиотеки операция<find>генерирует несколько временных<std::string>с (по одному при каждом внутреннем сравнении). В достаточно продвинутых компиляторах этого теперь избегают, чтобы создавался только один временный.
  • Ремонтные работы.

Boost 1.57 release

  • Когда доступны<std::tuple>s, они могут использоваться для операций поиска в индексах, оснащенных составными ключами.<boost::tuple>также поддерживают обратную совместимость.

Boost 1.56 release

  • Функция элемента хешированных индексов<erase(iterator)>раньше имела плохую производительность в условиях низкой нагрузки из-за требования возврата итератора к следующему элементу (см. билетNo 4264). В соответствии с решениемпроблемы LWG No579, эта проблема была исправлена при сохранении интерфейса<erase>, за счет использования еще одного слова памяти на элемент. Фактически, требования сложности C++ к неупорядоченным ассоциативным контейнерам были улучшены для хешированных индексов так, что
    • удаление данного элемента является безусловно постоянным временем,
    • в худшем случае производительность не<O(n)>, а<O(ndist)>, где<ndist>является числом неэквивалентных элементов в индексе.
    В связи с тем, что хешированные индексы опираются на новую структуру данных, внутреннее представление их итераторов и локальных итераторов изменилось, что влияет на сериализацию: их соответствующая сериализацияклассной версиибыла увеличена с 0 до 1. Старые архивы с хешированными индексными (местными) итераторами могут быть загружены версией Boost 1.56. MultiIndex, но не наоборот.
  • Индексы хеширования теперь обеспечивают<reserve>.
  • Индексы хэширования теперь можно проверить на равенство и неравенство в соответствии со стандартной спецификацией C++[unord.req]
  • . Публичный интерфейс Boost. MultiIndex предоставляет<noexcept>спецификации в соответствующих случаях (для компиляторов).
  • Улучшенная производительность неудачных вставок в<multi_index_container>.
  • Много внутреннего кода, направленного на поддержку MSVC++ 7.0 и ранее были удалены. Время компиляции без этого кода может быть немного быстрее.
  • Исправлена ошибка с вставкой через итераторы, относящиеся к значениям r (билет#9665).
  • Made Boost.MultiIndex совместим с<BOOST_BIND_NO_PLACEHOLDERS>(билет#9798).
  • Ремонтные работы.

Boost 1.55 release

  • Boost.MultiIndex был выведен на более высокий уровень соответствия C++11.
    • <multi_index_container>теперь эффективно перемещается.
    • Поддерживаются списки инициализаторов.
    • Предоставляемые функции места.
    • Поддерживаются некопируемые элементы (такие как<std::unique_ptr<T>>). Это включает в себя вставку диапазона<first>,<last>, где итераторы указывают на тип, который преобразуется в тип элемента: в процессе не происходит копирование конструкции.
    • Индексы случайного доступа обеспечивают<shrink_to_fit()>.
    Обратитесь к разделуспецификации компиляторадля ограничений на компиляторы до C++11.
  • Уничтожаются следующие классы:

Boost 1.54 release

  • Подавлены некоторые потенциальные предупреждения, описанные в билетах#8034и#8129.
  • Ремонтные работы.

Boost 1.49 release

156

  • Подавлено потенциальное узкое предупреждение о преобразовании, описанное в билете#3365.
  • Boost 1.48 release

    • Исправлена проблема совместимости сBoost.Foreach(билет#5741).

    Boost 1.47 release

    Boost 1.44 release

    • Исправлена ошибка, препятствующая использованию<modify_key>с откатом взаказанныхихешированныхиндексах, когда<Modifier>и<Rollback>являются различными типами [билет#4130.

    Boost 1.43 release

    Boost 1.42 release

    • Ремонтные работы.

    Boost 1.41 release

    Boost 1.38 release

    • Эти конструкции обесцениваются:
      • <nth_index_iterator<MultiIndexContainer,N>::type>,
      • <multi_index_container<...>::nth_index_iterator<N>::type>,
      • <nth_index_const_iterator<MultiIndexContainer,N>::type>,
      • <multi_index_container<...>::nth_index_const_iterator<N>::type>,
      • <index_iterator<MultiIndexContainer,Tag>::type>,
      • <multi_index_container<...>::index_iterator<Tag>::type>,
      • <index_const_iterator<MultiIndexContainer,Tag>::type>,
      • <multi_index_container<...>::index_const_iterator<Tag>::type>.
      . Вместо этого используйте следующие:
      • <nth_index<MultiIndexContainer,N>::type::iterator>,
      • <multi_index_container<...>::nth_index<N>::type::iterator>,
      • <nth_index<MultiIndexContainer,N>::type::const_iterator>,
      • <multi_index_container<...>::nth_index<N>::type::const_iterator>,
      • <index<MultiIndexContainer,Tag>::type::iterator>,
      • <multi_index_container<...>::index<Tag>::type::iterator>,
      • <index<MultiIndexContainer,Tag>::type::const_iterator>,
      • <multi_index_container<...>::index<Tag>::type::const_iterator>.
    • Ремонтные работы.

    Boost 1.37 release

    • Ремонтные работы.

    Boost 1.36 release

    • В предыдущих версиях библиотеки функцииэлемента обновленияхешированных индексов могут изменять положение элемента, даже если соответствующий ключ не изменяется с обновлением. Это законное, но, вероятно, неожиданное поведение. Функции были переписаны, чтобы обеспечить дополнительную гарантию того, что элементы с немодифицированным ключом не изменят позицию в хешированных индексах, как это всегда было в случае с упорядоченными индексами. Эти гарантии теперь задокументированы в ссылке.
    • Добавлен конструктор<multi_index_container::multi_index_container(const allocator_type&)>для имитации эквивалентного интерфейса в контейнерах последовательностей STL.
    • Ремонтные работы.

    Boost 1.35 release

    • Новый<global_fun>предопределенный экстрактор ключей.
    • Добавлено<iterator_to>средство.
    • Включенаподдержка нестандартных распределителей, таких как те изBoost.Interprocess, что делает<multi_index_container>s размещаемыми в общей памяти.
    • Новые версии<modify>и<modify_key>с откатом, как описано вучебнике
    • .
    • Индексы обеспечивают новые функции<cbegin>,<cend>и, когда это применимо,<crbegin>и<crend>в соответствии с последними проектами следующего пересмотра стандарта C++.
    • Намеченная вставка в упорядоченные индексы полностью соответствует разрешениям стандартной библиотеки C++Defect Report 233. Новое требование о том, чтобы точка вставки всегда была как можно ближе к намеку, вызывает иное поведение, чем проявлялось в предыдущих выпусках Boost. MultiIndex, который потенциально может вызвать проблемы обратной совместимости; в любом случае вероятность возникновения этих проблем совместимости в реальном сценарии очень низка.
    • Индексы последовательного и случайного доступа теперь соответствуют требованиям стандарта C++ для контейнеров последовательностей в отношении операций<assign(f,l)>и<insert(p,f,l)>(23.1.1/9): если<f>и<l>имеют один и тот же интегральный тип, избегают перегрузок на основе итератора этих функций-членов:
      <
      typedefmulti_index_container<
       int,indexed_by<sequenced<>>
      >sequenced_container;
      std::list<int>    l(...);
      sequenced_containerc;
      // iterator-based overload of assign
      c.assign(l.begin(),l.end());
      // The following is equivalent to
      //   c.assign(
      //      static_cast<sequenced_container::size_type>(10),100);
      // that is, "10" and "100" are not taken to be iterators as
      // in the previous expression.
      c.assign(10,100);
      
      >
    • Улучшена производительность упорядоченных индексов<range>и<equal_range>.
    • Ремонтные работы.

    Boost 1.34 release

    • Добавленыиндексы случайного доступа.
    • Неключевые индексы обеспечивают новыесредства перестановки, позволяющие взаимодействовать с внешними мутирующими алгоритмами.
    • Все предопределенные повышения. Ключевые экстракторы MultiIndex, инстанцированные для данного типа<T>, могут обрабатывать объекты типов, полученных из<T>или конвертируемых в<T>(ицепных указателейк ним). Ранее принимались только объекты точно указанного типа (наряду с<reference_wrapper>с и прикованными к ним указателями).
    • <composite_key_compare>и связанные с ними классы принимают операнды, не включенные в кортежи, как если бы они были переданы в кортеж длиной 1; это позволяет пользователю опустить кортеж, заключенный в операции поиска с использованием композитных ключей, когда предоставляется только первый ключ.
    • Были оптимизированы основные алгоритмы упорядоченных индексов, что позволило сократить время вставки примерно на 5%.
    • Размер заголовков узлов упорядоченных индексов на большинстве платформ снижен на 25%, с использованием хорошо известнойтехники оптимизации.
    • Учебник был реструктурирован, добавлены новые примеры.
    • Ремонтные работы.

    Boost 1.33.1 release

    • Для упорядоченных и хешированных индексов<erase(it)>и<erase(first,last)>теперь возвращают итератор к элементу после удаляемых (ранее ничего не возвращалось) в соответствии с C++. Стандартная библиотекаОтчет о дефектах 130и выпуск 6.19 TR1Список проблем.
    • Повышение. MultiIndex предлагает обычные гарантии в отношении многопоточного кода, предоставляемые большинством реализаций STL:
      1. Одновременный доступ к различным контейнерам безопасен.
      2. Доступ к одному и тому же контейнеру безопасен.
      В предыдущих версиях библиотеки последняя гарантия не поддерживалась должным образом, если был установлен безопасный режим. Сейчас эта проблема решена.
    • Ремонтные работы.

    Boost 1.33 release

    • Добавленыхешированные индексы, интерфейс которых основан на спецификации для неупорядоченных ассоциативных контейнеров в стандартном библиотечном техническом отчете C++ (TR1).
    • Добавлена поддержкасериализациидляBoost.Serialization
    • .
    • Уничтожение мемфунов<multi_index_container>и<clear>теперь происходит быстрее.
    • Внутренние изменения, направленные на уменьшение длины имен символов, генерируемых компилятором; порезы до 50% могут быть достигнуты в отношении выпуска Boost 1.32. Это приводит к гораздо более коротким и читаемым сообщениям об ошибках, а также оказывает благотворное влияние на компиляторы со строгими ограничениями длины имен символов. Кроме того, добавлен раздел о дальнейшемуменьшении длины имени символа.
    • Реструктуризация некоторых частей документации, новые примеры.
    • Ремонтные работы.




    Пересмотрено 19 октября 2015

    © Copyright 2003-2015 Joaquín M López Muñoz. Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файлLICENSE_1_0.txtили копию на) http://www.boost.org/LICENSE_1_0.txt

    Статья Boost.MultiIndex Documentation - Release notes раздела Boost.MultiIndex Documentation - Index может быть полезна для разработчиков на c++ и boost.




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



    :: Главная :: Boost.MultiIndex Documentation - Index ::


    реклама


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

    Время компиляции файла: 2024-08-30 11:47:00
    2025-05-20 05:11:36/0.0093600749969482/1