en	= Change Log
zh-hans	= 变更日志

en	:idprefix: changes_ :svn-ticket-url: https://svn.boost.org/trac/boost/ticket :github-pr-url: https://github.com/boostorg/unordered/pull :cpp: C++

en	Release 1.89.0
zh-hans	版本 1.89.0

en	Deprecated `boost::unordered::hash_is_avalanching` is now a using-declaration of
zh-hans	已弃用的 boost::unordered::hash_is_avalanching 现在是

en	`boost::hash_is_avalanching` in `<boost/container_hash/hash_is_avalanching.hpp>`. Use that header directly instead. `<boost/unordered/hash_traits.hpp>` will be removed in the future.
zh-hans	在 <boost container_hash="" hash_is_avalanching.hpp=""> 中对 boost::hash_is_avalanching 的使用声明。请直接使用该头文件代替。<boost unordered="" hash_traits.hpp=""> 将在未来被移除。</boost></boost>

en	Added `pull(const_iterator)` to open-addressing containers. This operation
zh-hans	为开放寻址容器新增 `pull(const_iterator)` 操作，该操作

en	allows for efficient removal and retrieval of an element via move construction.
zh-hans	支持通过移动构造机制高效移除并检索指定元素。

en	Release 1.88.0
zh-hans	版本 1.88.0

en	Migrated the documentation to a multipage format using Antora.
zh-hans	使用 Antora 将文档重构为多页面格式。

en	Release 1.87.0 - Major update
zh-hans	版本 1.87.0 - 重大更新

en	Added concurrent, node-based containers `boost::concurrent_node_map` and `boost::concurrent_node_set`.
zh-hans	新增基于节点的并发容器 `boost::concurrent_node_map` 与 `boost::concurrent_node_set` 。

en	Added `insert_and_visit(x, f1, f2)` and similar operations to concurrent containers, which
zh-hans	为并发容器新增 `insert_and_visit(x, f1, f2)` 及类似操作，这些操作

en	allow for visitation of an element right after insertion (by contrast, `insert_or_visit(x, f)` only visits the element if insertion did _not_ take place).
zh-hans	支持在插入元素后立即对其进行访问（而 `insert_or_visit(x, f)` 仅在未执行插入时才访问元素）。

en	Made visitation exclusive-locked within certain
zh-hans	在特定 `boost::concurrent_flat_set` 操作中启用独占锁访问机制，

en	`boost::concurrent_flat_set` operations to allow for safe mutable modification of elements ({github-pr-url}/265[PR#265^]).
zh-hans	以支持对元素进行安全的可变修改(https://github.com/boostorg/unordered/pull/265[PR#265])。

en	In Visual Studio Natvis, supported any container with an allocator that uses fancy pointers. This applies to any fancy pointer type, as long as the proper Natvis customization point "Intrinsic" functions are written for the fancy pointer type.
zh-hans	在 Visual Studio Natvis 中，现支持使用带花式指针分配器的任意容器。只要为花式指针类型编写了相应的 Natvis 自定义“Intrinsic”函数，即可适用于所有花式指针类型。

en	Added GDB pretty-printers for all containers and iterators. For a container with an allocator that uses fancy pointers, these only work if the proper pretty-printer is written for the fancy pointer type itself.
zh-hans	为所有容器和迭代器添加 GDB 美化打印器。对于使用花式指针分配器的容器，需先为花式指针类型编写对应的美化打印器方可正常使用。

en	Fixed `std::initializer_list` assignment issues for open-addressing containers
zh-hans	修复开放寻址容器中 `std::initializer_list` 的 赋值问题

en	({github-pr-url}/277[PR#277^]).
zh-hans	(https://github.com/boostorg/unordered/pull/277[PR#277])。

en	Allowed non-copyable callables to be passed to the `std::initializer_list` overloads of `insert_{and|or}_[c]visit` for concurrent containers, by internally passing a `std::reference_wrapper` of the callable to the iterator-pair overloads.
zh-hans	通过内部将可调用对象的 `std::reference_wrapper` 传递给迭代器对重载，现允许向并发容器的 `insert_{and|or}_[c]visit` 的 `std::initializer_list` 重载传递不可复制的可调用对象。

en	Release 1.86.0
zh-hans	版本 1.86.0

en	Added container `pmr` aliases when header `<memory_resource>` is available. The alias `boost::unordered::pmr::[container]` refers to `boost::unordered::[container]` with a `std::pmr::polymorphic_allocator` allocator type.
zh-hans	当头文件 `<memory_resource>` 可用时，新增容器 `pmr` 别名。 `boost::unordered::pmr::[container]` 别名指向使用 `std::pmr::polymorphic_allocator` 分配器类型的 `boost::unordered::[container]` 。</memory_resource>

en	Equipped open-addressing and concurrent containers to internally calculate and provide statistical metrics affected by the quality of the hash function. This functionality is enabled by the global macro `BOOST_UNORDERED_ENABLE_STATS`.
zh-hans	为开放寻址容器与并发容器增设内部统计功能，可计算并提供受哈希函数质量影响的统计指标。通过全局宏 `BOOST_UNORDERED_ENABLE_STATS` 启用。

en	Avalanching hash functions must now be marked via an `is_avalanching` typedef with an embedded `value` constant set to `true` (typically, defining `is_avalanching` as `std::true_type`). `using is_avalanching = void` is deprecated but allowed for backwards compatibility.
zh-hans	雪崩哈希函数现在必须通过内嵌 `value` 常量设为 `true` 的 `is_avalanching` typedef 来标记（通常将 `is_avalanching` 定义为 `std::true_type`）。 `using is_avalanching = void` 已被弃用，但为了向后兼容性仍予保留。

en	Added Visual Studio Natvis framework custom visualizations for containers and iterators. This works for all containers with an allocator using raw pointers. In this release, containers and iterators are not supported if their allocator uses fancy pointers. This may be addressed in later releases.
zh-hans	为容器和迭代器添加 Visual Studio Natvis 框架的自定义可视化功能。此功能适用于所有使用原始指针分配器的容器。在此版本中，若容器或迭代器的分配器使用花式指针，则暂不支持该功能，此问题可能在后续版本中解决。

en	Release 1.85.0
zh-hans	版本 1.85.0

en	Optimized `emplace()` for a `value_type` or `init_type` (if applicable) argument to bypass creating an intermediate object. The argument is already the same type as the would-be intermediate object.
zh-hans	优化 `emplace()` 对 `value_type` 或 `init_type` （如适用）参数的实现，使其无需创建中间对象即可直接处理参数，因为该参数类型与待构造的中间对象类型完全相同。

en	Optimized `emplace()` for `k,v` arguments on map containers to delay constructing the object until it is certain that an element should be inserted. This optimization happens when the map's `key_type` is move constructible or when the `k` argument is a `key_type`.
zh-hans	优化 map 容器的 `emplace()` 对 `k,v` 参数的处理：将对象构造延迟到确认需要插入元素时执行。此优化在映射的 `key_type` 可移动构造或 `k` 参数为 `key_type` 类型时生效。

en	Fixed support for allocators with `explicit` copy constructors ({github-pr-url}/234[PR#234^]).
zh-hans	修复对含 `explicit` 复制构造函数的分配器的支持(https://github.com/boostorg/unordered/pull/234[PR#234])。

en	Fixed bug in the `const` version of `unordered_multimap::find(k, hash, eq)` ({github-pr-url}/238[PR#238^]).
zh-hans	修复 `unordered_multimap::find(k, hash, eq)` 的 `const` 版本中的缺陷(https://github.com/boostorg/unordered/pull/238[PR#238])。

en	Release 1.84.0 - Major update
zh-hans	版本 1.84.0 - 重大更新

en	Added `boost::concurrent_flat_set`.
zh-hans	新增 `boost::concurrent_flat_set` 。

en	Added `[c]visit_while` operations to concurrent containers,
zh-hans	为并发容器新增 `[c]visit_while` 操作，

en	with serial and parallel variants.
zh-hans	提供串行与并行两种执行模式。

en	Added efficient move construction of `boost::unordered_flat_(map|set)` from
zh-hans	实现高效双向移动构造（从

en	`boost::concurrent_flat_(map|set)` and vice versa.
zh-hans	`boost::unordered_flat_(map|set)` 到 `boost::concurrent_flat_(map|set)` 及反向的）

en	Added bulk visitation to concurrent containers for increased lookup performance.
zh-hans	为并发容器新增批量访问功能以提升查找性能。

en	Added debug-mode mechanisms for detecting illegal reentrancies into
zh-hans	新增调试模式机制，用于检测用户代码对

en	a concurrent container from user code.
zh-hans	并发容器的非法重入操作。

en	Added Boost.Serialization support to all containers and their (non-local) iterator types.
zh-hans	为所有容器及其（非本地）迭代器类型添加 Boost.Serialization 支持。

en	Added support for fancy pointers to open-addressing and concurrent containers.
zh-hans	为开放寻址容器与并发容器新增对花式指针的支持，此特性支持诸如使用 Boost.Interprocess 分配器在共享内存中构建容器等应用场景。

en	This enables scenarios like the use of Boost.Interprocess allocators to construct containers in shared memory.
zh-hans	这使得像使用 Boost.Interprocess 分配器在共享内存中构造容器这样的场景成为可能。

en	Fixed bug in member of pointer operator for local iterators of closed-addressing
zh-hans	修复闭寻址容器局部迭代器的成员指针运算符缺陷

en	containers ({github-pr-url}/221[PR#221^], credit goes to GitHub user vslashg for finding and fixing this issue).
zh-hans	（https://github.com/boostorg/unordered/pull/221[PR#221] ，致谢 GitHub 用户 vslashg 发现并修复）。

en	Starting with this release, `boost::unordered_[multi]set` and `boost::unordered_[multi]map`
zh-hans	从此版本起， `boost::unordered_[multi]set` 和 `boost::unordered_[multi]map`

en	only work with C++11 onwards.
zh-hans	仅支持 C{plus}{plus}11 及以上版本。

en	Release 1.83.0 - Major update
zh-hans	版本 1.83.0 - 重大更新

en	Added `boost::concurrent_flat_map`, a fast, thread-safe hashmap based on open addressing.
zh-hans	新增基于开放寻址的快速线程安全哈希映射容器 `boost::concurrent_flat_map` 。

en	Sped up iteration of open-addressing containers.
zh-hans	提升开放寻址容器的迭代性能。

en	In open-addressing containers, `erase(iterator)`, which previously returned nothing, now
zh-hans	在开放寻址容器中，原无返回值的 `erase(iterator)` 方法，现在

en	returns a proxy object convertible to an iterator to the next element. This enables the typical `it = c.erase(it)` idiom without incurring any performance penalty when the returned proxy is not used.
zh-hans	返回一个可转换为下一元素迭代器的代理对象。此改进支持典型的 `it = c.erase(it)` 编程范式，且当未使用返回的代理对象时不会产生任何性能开销。

en	Release 1.82.0 - Major update
zh-hans	版本 1.82.0 - 重大更新

en	{cpp}03 support is planned for deprecation. Boost 1.84.0 will no longer support
zh-hans	计划弃用 C{plus}{plus}03 支持。Boost 1.84.0 将不再支持

en	{cpp}03 mode and {cpp}11 will become the new minimum for using the library.
zh-hans	C{plus}{plus}03 模式，C{plus}{plus}11 将成为使用该库的最低要求。

en	Added node-based, open-addressing containers
zh-hans	新增基于节点的开放寻址容器

en	`boost::unordered_node_map` and `boost::unordered_node_set`.
zh-hans	`boost::unordered_node_map` 与 `boost::unordered_node_set`。

en	Extended heterogeneous lookup to more member functions as specified in
zh-hans	将异构查找功能扩展至更多成员函数

en	https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html[P2363].
zh-hans	（根据https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2363r5.html[P2363] 规范） 。

en	Replaced the previous post-mixing process for open-addressing containers with
zh-hans	取代开放寻址容器原有的后混合处理流程（采用

en	a new algorithm based on extended multiplication by a constant.
zh-hans	基于常量扩展乘法的新算法）。

en	Fixed bug in internal emplace() impl where stack-local types were not properly
zh-hans	修复内部 emplace() 实现中存在的缺陷：

en	constructed using the Allocator of the container which breaks uses-allocator construction.
zh-hans	该缺陷曾导致栈局部类型未能使用容器的分配器进行正确构造，从而违反分配器感知构造规范。

en	Release 1.81.0 - Major update
zh-hans	版本 1.81.0 - 重大更新

en	Added fast containers `boost::unordered_flat_map` and `boost::unordered_flat_set`
zh-hans	新增基于开放寻址的快速容器`boost::unordered_flat_map` and `boost::unordered_flat_set`。

en	based on open addressing.
zh-hans	(基于开放寻址的)

en	Added CTAD deduction guides for all containers.
zh-hans	为所有容器添加 CTAD 推导指引。

en	Added missing constructors as specified in https://cplusplus.github.io/LWG/issue2713[LWG issue 2713].
zh-hans	补充 https://cplusplus.github.io/LWG/issue2713[LWG 问题 2713] 中要求的缺失构造函数。

en	Release 1.80.0 - Major update
zh-hans	版本 1.80.0 - 重大更新

en	Refactor internal implementation to be dramatically faster
zh-hans	重构内部实现以显著提升性能

en	Allow `final` Hasher and KeyEqual objects
zh-hans	允许 使用 `final` 修饰的 Hasher 和 KeyEqual 对象

en	Update documentation, adding benchmark graphs and notes on the new internal
zh-hans	更新文档，新增性能基准对比图及关于新内部数据结构的说明

en	data structures
zh-hans	（数据结构）

en	Release 1.79.0
zh-hans	版本 1.79.0

en	Improved {cpp}20 support:
zh-hans	增强 C{plus}{plus}20 标准兼容性：

en	** All containers have been updated to support heterogeneous `count`, `equal_range` and `find`. ** All containers now implement the member function `contains`. ** `erase_if` has been implemented for all containers.
zh-hans	** 所有容器均已完成升级，支持异构查找操作 `count` 、 `equal_range` 及 `find` 。 ** 所有容器现均已实现成员函数 `contains` 。 ** 所有容器均已实现 `erase_if` 功能。

en	Improved {cpp}23 support:
zh-hans	增强 C{plus}{plus}23 标准兼容性：

en	** All containers have been updated to support heterogeneous `erase` and `extract`.
zh-hans	** 所有容器均已完成升级，支持异构版本的 `erase` 与 `extract` 操作。

en	Changed behavior of `reserve` to eagerly
zh-hans	更改 `reserve` 的行为，

en	allocate ({github-pr-url}/59[PR#59^]).
zh-hans	使其立即分配桶数组空间(https://github.com/boostorg/unordered/pull/59[PR#59])。

en	Various warning fixes in the test suite.
zh-hans	测试套件中的多项警告修复。

en	Update code to internally use `boost::allocator_traits`.
zh-hans	将内部代码更新为使用 `boost::allocator_traits` 。

en	Switch to Fibonacci hashing.
zh-hans	切换至斐波那契哈希算法。

en	Update documentation to be written in AsciiDoc instead of QuickBook.
zh-hans	将文档编写格式从 QuickBook 切换为 AsciiDoc。

en	Release 1.67.0
zh-hans	版本 1.67.0

en	Improved {cpp}17 support:
zh-hans	增强 C{plus}{plus}17 标准兼容性：

en	** Add template deduction guides from the standard. ** Use a simple implementation of `optional` in node handles, so that they're closer to the standard. ** Add missing `noexcept` specifications to `swap`, `operator=` and node handles, and change the implementation to match. Using `std::allocator_traits::is_always_equal`, or our own implementation when not available, and `boost::is_nothrow_swappable` in the implementation.
zh-hans	** 新增标准的模板推导指南。 ** 在节点句柄中采用简化的 `optional` 实现，以使其 更符合标准规范。 ** 为 `swap` 、 `operator=` 及节点句柄补充缺失的 `noexcept` 规范，调整实现以符合规范要求。在实现中使用 `std::allocator_traits::is_always_equal` （若该特性不可用则采用自有实现），以及 `boost::is_nothrow_swappable` 在实现中。

en	Improved {cpp}20 support:
zh-hans	增强 C{plus}{plus}20 标准兼容性：

en	** Use `boost::to_address`, which has the proposed {cpp}20 semantics, rather than the old custom implementation.
zh-hans	** 使用具有 C{plus}{plus}20 提案语义的 `boost::to_address` ， 来替代原有的自定义实现。

en	Add `element_type` to iterators, so that `std::pointer_traits`
zh-hans	向迭代器添加 `element_type` 类型定义，以支持 `std::pointer_traits` 的

en	will work.
zh-hans	正常工作。

en	Use `std::piecewise_construct` on recent versions of Visual {cpp},
zh-hans	在新版 Visual C{plus}{plus} 及

en	and other uses of the Dinkumware standard library, now using Boost.Predef to check compiler and library versions.
zh-hans	其他使用 Dinkumware 标准库的环境中使用 `std::piecewise_construct` ，现在使用 Boost.Predef 来检查编译器和标准库版本。

en	Use `std::iterator_traits` rather than the boost iterator traits
zh-hans	使用 `std::iterator++_++traits` 替代 boost 迭代器特征库，

en	in order to remove dependency on Boost.Iterator.
zh-hans	以消除对 Boost.Iterator 的依赖。

en	Remove iterators' inheritance from `std::iterator`, which is
zh-hans	移除迭代器对 `std::iterator` 的继承

en	deprecated in {cpp}17, thanks to Daniela Engert ({github-pr-url}/7[PR#7^]).
zh-hans	（该基类在 C{plus}{plus}17 中已弃用），感谢 Daniela Engert的贡献(https://github.com/boostorg/unordered/pull/7[PR#7])。

en	Stop using `BOOST_DEDUCED_TYPENAME`.
zh-hans	停止使用 `BOOST_DEDUCED_TYPENAME` 。

en	Update some Boost include paths.
zh-hans	更新部分 Boost 头文件包含路径。

en	Rename some internal methods, and variables.
zh-hans	重命名部分内部方法和变量。

en	Various testing improvements.
zh-hans	多项测试改进。

en	Miscellaneous internal changes.
zh-hans	多项内部变更。

en	Release 1.66.0
zh-hans	版本 1.66.0

en	Simpler move construction implementation.
zh-hans	更简化的移动构造实现。

en	Documentation fixes ({github-pr-url}/6[GitHub #6^]).
zh-hans	文档修正(https://github.com/boostorg/unordered/pull/6[GitHub #6])。

en	Release 1.65.0
zh-hans	版本 1.65.0

en	Add deprecated attributes to `quick_erase` and `erase_return_void`.
zh-hans	向 `quick_erase` 和 `erase_return_void` 添加弃用属性。

en	I really will remove them in a future version this time.
zh-hans	本次确认将在未来版本中移除这两个接口。

en	Small standards compliance fixes:
zh-hans	局部标准符合性修正：

en	** `noexpect` specs for `swap` free functions. ** Add missing `insert(P&&)` methods.
zh-hans	** `swap` 自由函数的 `noexcept` 规范。** 补充缺失的 `insert(P&amp;&amp;)` 方法。

en	Release 1.64.0
zh-hans	版本 1.64.0

en	Initial support for new {cpp}17 member functions:
zh-hans	初步支持 C{plus}{plus}17 新成员函数：

en	`insert_or_assign` and `try_emplace` in `unordered_map`,
zh-hans	`unordered_map` 中的 `insert_or_assign` 和 `try_emplace`，

en	Initial support for `merge` and `extract`.
zh-hans	初步支持 `merge` 与 `extract` 操作。

en	Does not include transferring nodes between `unordered_map` and `unordered_multimap` or between `unordered_set` and `unordered_multiset` yet. That will hopefully be in the next version of Boost.
zh-hans	目前尚未支持在 `unordered_map` 与 `unordered_multimap` 之间，或 `unordered_set` 与 `unordered_multiset` 之间转移节点。该功能有望在下一版 Boost 中提供。

en	Release 1.63.0
zh-hans	版本 1.63.0

en	Check hint iterator in `insert`/`emplace_hint`.
zh-hans	检查 `insert` / `emplace_hint` 操作中提示迭代器的有效性。

en	Fix some warnings, mostly in the tests.
zh-hans	修复部分警告（主要出现在测试中）。

en	Manually write out `emplace_args` for small numbers of arguments -
zh-hans	为参数数量较少的情况手动编写 `emplace_args` 代码，

en	should make template error messages a little more bearable.
zh-hans	以减轻模板错误消息的负担。

en	Remove superfluous use of `boost::forward` in emplace arguments,
zh-hans	移除 emplace 参数中多余的 `boost::forward` 调用，

en	which fixes emplacing string literals in old versions of Visual {cpp}.
zh-hans	以修复旧版 Visual C{plus}{plus} 中字面量字符串的就地构造问题。

en	Fix an exception safety issue in assignment. If bucket allocation
zh-hans	修复赋值操作中的异常安全问题。若桶分配过程

en	throws an exception, it can overwrite the hash and equality functions while leaving the existing elements in place. This would mean that the function objects wouldn't match the container elements, so elements might be in the wrong bucket and equivalent elements would be incorrectly handled.
zh-hans	抛出异常，可能导致哈希函数与相等性判断函数被覆盖，而现有元素仍保留在容器中。这将造成函数对象与容器元素不匹配，进而引发元素错置桶位及等价元素处理错误的问题。

en	Various reference documentation improvements.
zh-hans	多项参考文档改进。

en	Better allocator support ({svn-ticket-url}/12459[#12459^]).
zh-hans	增强的分配器支持(https://svn.boost.org/trac/boost/ticket/12459[#12459])。

en	Make the no argument constructors implicit.
zh-hans	将无参构造函数改为隐式声明。

en	Implement missing allocator aware constructors.
zh-hans	实现缺失的分配器感知构造函数。

en	Fix assigning the hash/key equality functions for empty containers.
zh-hans	修复空容器在设置哈希函数与键值相等性判断函数时存在的问题。

en	Remove unary/binary_function from the examples in the documentation.
zh-hans	从文档示例中移除 unary/binary_function。

en	They are removed in {cpp}17.
zh-hans	这两者在 C{plus}{plus}17 中已被移除。

en	Support 10 constructor arguments in emplace. It was meant to support up to 10
zh-hans	emplace 方法现支持 10 个构造参数。其设计本应支持最多 10 个参数，

en	arguments, but an off by one error in the preprocessor code meant it only supported up to 9.
zh-hans	但由于预处理代码中存在差一错误，仅支持 9 个参数。

en	Release 1.62.0
zh-hans	版本 1.62.0

en	Remove use of deprecated `boost::iterator`.
zh-hans	停止使用已弃用的 `boost::iterator` 组件 。

en	Remove `BOOST_NO_STD_DISTANCE` workaround.
zh-hans	移除 `BOOST_NO_STD_DISTANCE` 的兼容性代码。

en	Remove `BOOST_UNORDERED_DEPRECATED_EQUALITY` warning.
zh-hans	移除 `BOOST_UNORDERED_DEPRECATED_EQUALITY` 警告。

en	Simpler implementation of assignment, fixes an exception safety issue
zh-hans	采用更简化的赋值操作实现，修复了

en	for `unordered_multiset` and `unordered_multimap`. Might be a little slower.
zh-hans	`unordered_multiset` 与 `unordered_multimap` 的异常安全问题，但性能可能略有下降。

en	Stop using return value SFINAE which some older compilers have issues
zh-hans	停止使用返回值SFINAE技术，以避免部分旧版本编译器的

en	with.
zh-hans	兼容性问题。

en	Release 1.58.0
zh-hans	版本 1.58.0

en	Remove unnecessary template parameter from const iterators.
zh-hans	移除常量迭代器中不必要的模板参数。

en	Rename private `iterator` typedef in some iterator classes, as it
zh-hans	重命名部分迭代器类中私有的 `iterator` 类型别名，以

en	confuses some traits classes.
zh-hans	避免某些特征类产生混淆。

en	Fix move assignment with stateful, propagate_on_container_move_assign
zh-hans	修复当使用具有状态且设置了propagate_on_container_move_assign 的分配器时，

en	allocators ({svn-ticket-url}/10777[#10777^]).
zh-hans	移动赋值操作存在的缺陷(https://svn.boost.org/trac/boost/ticket/10777[#10777])。

en	Fix rare exception safety issue in move assignment.
zh-hans	修复移动赋值操作中一处罕见的异常安全问题。

en	Fix potential overflow when calculating number of buckets to allocate
zh-hans	修复计算待分配桶数量时可能出现的溢出问题

en	({github-pr-url}/4[GitHub #4^]).
zh-hans	(https://github.com/boostorg/unordered/pull/4[GitHub #4])。

en	Release 1.57.0
zh-hans	版本 1.57.0

en	Fix the `pointer` typedef in iterators ({svn-ticket-url}/10672[#10672^]).
zh-hans	修复迭代器中 `pointer` 类型定义的问题(https://svn.boost.org/trac/boost/ticket/10672[#10672])。

en	Fix Coverity warning
zh-hans	修复 Coverity 警告

en	({github-pr-url}/2[GitHub #2^]).
zh-hans	(https://github.com/boostorg/unordered/pull/2[GitHub #2])。

en	Release 1.56.0
zh-hans	版本 1.56.0

en	Fix some shadowed variable warnings ({svn-ticket-url}/9377[#9377^]).
zh-hans	修复部分变量遮蔽警告(https://svn.boost.org/trac/boost/ticket/9377[#9377])。

en	Fix allocator use in documentation ({svn-ticket-url}/9719[#9719^]).
zh-hans	修正文档中的分配器用法(https://svn.boost.org/trac/boost/ticket/9719[#9719])。

en	Always use prime number of buckets for integers. Fixes performance
zh-hans	对整数键始终采用质数桶数量。此修复解决了

en	regression when inserting consecutive integers, although makes other uses slower ({svn-ticket-url}/9282[#9282^]).
zh-hans	插入连续整数时的性能回归问题，但可能会降低其他使用场景的速度(https://svn.boost.org/trac/boost/ticket/9282[#9282])。

en	Only construct elements using allocators, as specified in {cpp}11 standard.
zh-hans	严格遵循 C{plus}{plus}11 标准规定，仅使用分配器构造元素。

en	Release 1.55.0
zh-hans	版本 1.55.0

en	Avoid some warnings ({svn-ticket-url}/8851[#8851^], {svn-ticket-url}/8874[#8874^]).
zh-hans	避免部分警告(https://svn.boost.org/trac/boost/ticket/8851[#8851] 、 https://svn.boost.org/trac/boost/ticket/8874[#8874])。

en	Avoid exposing some detail functions via. ADL on the iterators.
zh-hans	避免通过迭代器上的 ADL 暴露部分细节函数。

en	Follow the standard by only using the allocators' construct and destroy
zh-hans	遵循标准规范，仅使用分配器的 construct 和 destroy

en	methods to construct and destroy stored elements. Don't use them for internal data like pointers.
zh-hans	方法来构造和析构存储的元素，不将其用于指针等内部数据的操作。

en	Release 1.54.0
zh-hans	版本 1.54.0

en	Mark methods specified in standard as `noexpect`. More to come in the next
zh-hans	为标准中指定的方法标注 `noexcept` 。更多方法将在下一

en	release.
zh-hans	版本中更新。

en	If the hash function and equality predicate are known to both have nothrow
zh-hans	若已知哈希函数与相等性谓词均具备无抛出

en	move assignment or construction then use them.
zh-hans	移动赋值或移动构造特性，则使用它们。

en	Release 1.53.0
zh-hans	版本 1.53.0

en	Remove support for the old pre-standard variadic pair constructors, and
zh-hans	移除对旧式变参 pair 构造函数和

en	equality implementation. Both have been deprecated since Boost 1.48.
zh-hans	相等性实现的支持，这两项功能自 Boost 1.48 起已被弃用。

en	Remove use of deprecated config macros.
zh-hans	停止使用已弃用的配置宏。

en	More internal implementation changes, including a much simpler
zh-hans	更多内部实现变更，包括采用更简化的

en	implementation of `erase`.
zh-hans	`erase` 方法 实现。

en	Release 1.52.0
zh-hans	版本 1.52.0

en	Faster assign, which assigns to existing nodes where possible, rather than
zh-hans	加速赋值操作：尽可能复用现有节点进行赋值，

en	creating entirely new nodes and copy constructing.
zh-hans	而非创建全新节点并执行复制构造。

en	Fixed bug in `erase_range` ({svn-ticket-url}/7471[#7471^]).
zh-hans	修复 `erase_range` 方法中的缺陷(https://svn.boost.org/trac/boost/ticket/7471[#7471])。

en	Reverted some of the internal changes to how nodes are created, especially
zh-hans	回退部分关于节点创建机制的内部变更（尤其

en	for {cpp}11 compilers. 'construct' and 'destroy' should work a little better for {cpp}11 allocators.
zh-hans	针对 C{plus}{plus}11 编译器），使 'construct' 和 'destroy' 对 C{plus}{plus}11 分配器更有效。

en	Simplified the implementation a bit. Hopefully more robust.
zh-hans	简化实现，以提高健壮性。

en	Release 1.51.0
zh-hans	版本 1.51.0

en	Fix construction/destruction issue when using a {cpp}11 compiler with a
zh-hans	修复当使用 C{plus}{plus}11 编译器搭配 C{plus}{plus}03 分配器时

en	{cpp}03 allocator ({svn-ticket-url}/7100[#7100^]).
zh-hans	出现的构造/析构问题(https://svn.boost.org/trac/boost/ticket/7100[#7100])。

en	Remove a `try..catch` to support compiling without exceptions.
zh-hans	移除一段 `try..catch` 代码块以支持无异常编译模式。

en	Adjust SFINAE use to try to support g++ 3.4 ({svn-ticket-url}/7175[#7175^]).
zh-hans	调整 SFINAE 的实现方式以兼容 g{plus}{plus} 3.4(https://svn.boost.org/trac/boost/ticket/7175[#7175])。

en	Updated to use the new config macros.
zh-hans	更新为使用新的配置宏。

en	Release 1.50.0
zh-hans	版本 1.50.0

en	Fix equality for `unordered_multiset` and `unordered_multimap`.
zh-hans	修复 `unordered_multiset` 与 `unordered_multimap` 的相等性判断逻辑。

en	{svn-ticket-url}/6857[Ticket 6857^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/6857[问题单 6857] ：

en	Implement `reserve`.
zh-hans	实现 `reserve` 。

en	{svn-ticket-url}/6771[Ticket 6771^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/6771[问题 6771] ：

en	Avoid gcc's `-Wfloat-equal` warning.
zh-hans	规避 gcc 的 `-Wfloat-equal` 编译警告。

en	{svn-ticket-url}/6784[Ticket 6784^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/6784[问题单 6784] ：

en	Fix some Sun specific code.
zh-hans	修复部分 Sun 编译器专用代码。

en	{svn-ticket-url}/6190[Ticket 6190^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/6190[问题单 6190] ：

en	Avoid gcc's `-Wshadow` warning.
zh-hans	规避 gcc 的 `-Wshadow` 编译警告。

en	{svn-ticket-url}/6905[Ticket 6905^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/6905[问题单 6905] ：

en	Make namespaces in macros compatible with `bcp` custom namespaces. Fixed by Luke Elliott.
zh-hans	使宏中的命名空间与 `bcp` 自定义命名空间兼容（由 Luke Elliott 修复）。

en	Remove some of the smaller prime number of buckets, as they may make
zh-hans	移除部分较小的质数桶数量，因为这些数值

en	collisions quite probable (e.g. multiples of 5 are very common because we used base 10).
zh-hans	可能显著增加冲突概率（例如，由于我们使用十进制，5的倍数出现频率很高）。

en	On old versions of Visual {cpp}, use the container library's implementation
zh-hans	对于旧版本 Visual C{plus}{plus}，优先使用容器库自带的

en	of `allocator_traits`, as it's more likely to work.
zh-hans	`allocator_traits` 实现，因其兼容性更佳。

en	On machines with 64 bit std::size_t, use power of 2 buckets, with Thomas
zh-hans	64 位 std::size_t 机器上使用 2 的幂次桶数量，通过 Thomas

en	Wang's hash function to pick which one to use. As modulus is very slow for 64 bit values.
zh-hans	Wang 哈希函数选择桶（因取模运算在 64 位值上极慢）。

en	Some internal changes.
zh-hans	部分内部变更。

en	Release 1.49.0
zh-hans	版本 1.49.0

en	Fix warning due to accidental odd assignment.
zh-hans	修复因意外出现的异常赋值操作而产生的编译警告。

en	Slightly better error messages.
zh-hans	轻微优化错误消息。

en	Release 1.48.0 - Major update
zh-hans	版本 1.48.0 - 重大更新

en	This is major change which has been converted to use Boost.Move's move emulation, and be more compliant with the {cpp}11 standard. See the xref:compliance.adoc[compliance section] for details.
zh-hans	本本次为重大更新：容器已改用 Boost.Move 的移动操作模拟实现，并显著提升了对 C{plus}{plus}11 标准的符合性。详见 xref:compliance.adoc[标准合规性章节] 。

en	The container now meets {cpp}11's complexity requirements, but to do so uses a little more memory. This means that `quick_erase` and `erase_return_void` are no longer required, they'll be removed in a future version.
zh-hans	该容器现满足 C{plus}{plus}11 的复杂度要求，但为此会占用稍多内存。这意味着 `quick_erase` 与 `erase_return_void` 接口已不再必需，将在未来版本中移除。

en	{cpp}11 support has resulted in some breaking changes:
zh-hans	C{plus}{plus}11 支持导致部分破坏性变更：

en	Equality comparison has been changed to the {cpp}11 specification.
zh-hans	相等性比较已改为遵循 C{plus}{plus}11 规范。

en	In a container with equivalent keys, elements in a group with equal keys used to have to be in the same order to be considered equal, now they can be a permutation of each other. To use the old behavior define the macro `BOOST_UNORDERED_DEPRECATED_EQUALITY`.
zh-hans	在包含等价键的容器中，原先要求同一组等价键内的元素必须顺序一致才被视为相等，现在则允许它们互为排列。如需使用旧行为，请定义宏 `BOOST_UNORDERED_DEPRECATED_EQUALITY` 。

en	The behaviour of swap is different when the two containers to be
zh-hans	当两个待交换容器的分配器不相等时，swap 操作的行为发生变更。

en	swapped has unequal allocators. It used to allocate new nodes using the appropriate allocators, it now swaps the allocators if the allocator has a member structure `propagate_on_container_swap`, such that `propagate_on_container_swap::value` is true.
zh-hans	旧版本会通过相应的分配器分配新节点，现在则改为：若分配器包含 `propagate_on_container_swap` 成员结构体且其 `propagate_on_container_swap::value` 为 true，则会交换分配器本身。

en	Allocator's `construct` and `destroy` functions are called with raw
zh-hans	现在当调用分配器的 `construct` 与 `destroy` 时，直接传入原始指针，

en	pointers, rather than the allocator's `pointer` type.
zh-hans	而非分配器定义的 `pointer` 类型。

en	`emplace` used to emulate the variadic pair constructors that
zh-hans	`emplace` 方法原先模拟了

en	appeared in early {cpp}0x drafts. Since they were removed it no longer does so. It does emulate the new `piecewise_construct` pair constructors - only you need to use `boost::piecewise_construct`. To use the old emulation of the variadic constructors define `BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT`.
zh-hans	早期 C{plus}{plus}0x 草案中的变参 pair 构造函数。由于该特性已被移除，现不再提供此模拟实现。当前仅模拟新的 `piecewise_construct` pair 构造函数，但需使用 `boost::piecewise_construct` 作为参数。若需启用旧版变参构造函数的模拟行为，请定义宏 `BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT` 。

en	Release 1.45.0
zh-hans	版本 1.45.0

en	Fix a bug when inserting into an `unordered_map` or `unordered_set` using
zh-hans	修复了在使用返回 `value_type` 副本的迭代器插入 `unordered_map` 或 `unordered_set` 时的一个错误。

en	iterators which returns `value_type` by copy.
zh-hans	(使用返回 `value_type` 副本)

en	Release 1.43.0
zh-hans	版本 1.43.0

en	{svn-ticket-url}/3966[Ticket 3966^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/3966[问题单 3966] ：

en	`erase_return_void` is now `quick_erase`, which is the http://home.roadrunner.com/~hinnant/issue_review/lwg-active.html#579[ current forerunner for resolving the slow erase by iterator^], although there's a strong possibility that this may change in the future. The old method name remains for backwards compatibility but is considered deprecated and will be removed in a future release.
zh-hans	`erase_return_void` 更名为 `quick_erase` （符合 http://home.roadrunner.com/~hinnant/issue_review/lwg-active.html#579[当前迭代器擦除缓慢的解决方案^]）。旧方法名出于向后兼容性予以保留，但已被视为弃用接口，将在未来版本中移除。

en	Use Boost.Exception.
zh-hans	使用 Boost.Exception。

en	Stop using deprecated `BOOST_HAS_*` macros.
zh-hans	停止使用已弃用的 `BOOST_HAS_*` 系列宏。

en	Release 1.42.0
zh-hans	版本 1.42.0

en	Support instantiating the containers with incomplete value types.
zh-hans	支持使用不完整值类型来实例化容器。

en	Reduced the number of warnings (mostly in tests).
zh-hans	减少编译警告数量（主要出现在测试中）。

en	Improved codegear compatibility.
zh-hans	提升 Codegear 兼容性。

en	{svn-ticket-url}/3693[Ticket 3693^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/3693[问题单 3693] ：

en	Add `erase_return_void` as a temporary workaround for the current `erase` which can be inefficient because it has to find the next element to return an iterator.
zh-hans	新增 `erase_return_void` 作为临时解决方案，以应对当前 `erase` 方法因需查找下一元素返回迭代器而可能产生的效率问题。

en	Add templated find overload for compatible keys.
zh-hans	新增针对兼容键的模板化 find 重载。

en	{svn-ticket-url}/3773[Ticket 3773^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/3773[问题单 3773] ：

en	Add missing `std` qualifier to `ptrdiff_t`.
zh-hans	为 `ptrdiff_t` 添加缺失的 `std` 限定符。

en	Some code formatting changes to fit almost all lines into 80 characters.
zh-hans	调整代码格式，使大多数代码行不超过 80 字符。

en	Release 1.41.0 - Major update
zh-hans	版本 1.41.0 - 重大更新

en	The original version made heavy use of macros to sidestep some of the older
zh-hans	初始版本曾大量使用

en	compilers' poor template support. But since I no longer support those compilers and the macro use was starting to become a maintenance burden it has been rewritten to use templates instead of macros for the implementation classes.
zh-hans	宏来规避旧式编译器薄弱的模板支持能力。鉴于现已不再支持这些编译器，且宏的使用逐渐成为维护负担，现将实现类重构为使用模板替代宏。

en	The container object is now smaller thanks to using `boost::compressed_pair`
zh-hans	通过 `boost::compressed_pair` 实现 EBO 及微调函数缓冲区

en	for EBO and a slightly different function buffer - now using a bool instead of a member pointer.
zh-hans	（现使用 bool 替代成员指针），容器对象的内存占用得以减小。

en	Buckets are allocated lazily which means that constructing an empty container
zh-hans	桶采用延迟分配机制，这意味着构造空容器时

en	will not allocate any memory.
zh-hans	不会分配任何内存。

en	Release 1.40.0
zh-hans	版本 1.40.0

en	{svn-ticket-url}/2975[Ticket 2975^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/2975[问题单 2975] ：

en	Store the prime list as a preprocessor sequence - so that it will always get the length right if it changes again in the future.
zh-hans	将质数列表存储为预处理序列，确保未来再次调整列表长度时能自动保持正确。

en	{svn-ticket-url}/1978[Ticket 1978^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/1978[问题单 1978] ：

en	Implement `emplace` for all compilers.
zh-hans	为所有编译器实现 `emplace` 。

en	{svn-ticket-url}/2908[Ticket 2908^],
zh-hans	https://svn.boost.org/trac/boost/ticket/2908[问题单 2908] 、

en	{svn-ticket-url}/3096[Ticket 3096^]: Some workarounds for old versions of borland, including adding explicit destructors to all containers.
zh-hans	https://svn.boost.org/trac/boost/ticket/3096[问题单 3096] ：针对旧版 borland 的变通方案（包括为所有容器添加显式析构函数）。

en	{svn-ticket-url}/3082[Ticket 3082^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/3082[问题单 3082] ：

en	Disable incorrect Visual {cpp} warnings.
zh-hans	禁用 Visual C{plus}{plus} 编译器的错误警告。

en	Better configuration for {cpp}0x features when the headers aren't available.
zh-hans	对 C{plus}{plus}0x 特性提供优化方案，以应对头文件不可用的情况。

en	Create less buckets by default.
zh-hans	默认创建更少的桶。

en	Release 1.39.0
zh-hans	版本 1.39.0

en	{svn-ticket-url}/2756[Ticket 2756^]: Avoid a warning
zh-hans	https://svn.boost.org/trac/boost/ticket/2756[问题单 2756] ：规避

en	on Visual {cpp} 2009.
zh-hans	Visual C{plus}{plus} 2009 的编译警告。

en	Some other minor internal changes to the implementation, tests and
zh-hans	对实现、测试及文档进行其他少量内部调整。

en	documentation.
zh-hans	（文档）

en	Avoid an unnecessary copy in `operator[]`.
zh-hans	避免 `operator[]` 中不必要的复制。

en	{svn-ticket-url}/2975[Ticket 2975^]: Fix length of
zh-hans	https://svn.boost.org/trac/boost/ticket/2975[问题单 2975] ：修正

en	prime number list.
zh-hans	质数列表长度。

en	Release 1.38.0
zh-hans	版本 1.38.0

en	Use link:../../../../core/swap.html[`boost::swap`^].
zh-hans	使用 link:../../../../core/swap.html[`boost::swap`] 。

en	{svn-ticket-url}/2237[Ticket 2237^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/2237[问题单 2237] ：

en	Document that the equality and inequality operators are undefined for two objects if their equality predicates aren't equivalent. Thanks to Daniel Krügler.
zh-hans	补充说明：如果两个对象的相等谓词不等价，则它们的相等与不等运算符的行为未定义。感谢 Daniel Krügler。

en	{svn-ticket-url}/1710[Ticket 1710^]:
zh-hans	https://svn.boost.org/trac/boost/ticket/1710[问题单 1710]：

en	Use a larger prime number list. Thanks to Thorsten Ottosen and Hervé Brönnimann.
zh-hans	采用更长的质数列表。感谢 Thorsten Ottosen 与 Hervé Brönnimann 的贡献。

en	Use
zh-hans	使用

en	link:../../../../type_traits/index.html[aligned storage^] to store the types. This changes the way the allocator is used to construct nodes. It used to construct the node with two calls to the allocator's `construct` method - once for the pointers and once for the value. It now constructs the node with a single call to construct and then constructs the value using in place construction.
zh-hans	link:../../../../type_traits/index.html[对齐存储] 来存储类型。这改变了利用分配器构造节点的方式：原先通过两次调用分配器的 `construct` 方法分别构造指针和值，现在仅通过单次调用构造节点，随后采用就地构造方式构建值对象。

en	Add support for {cpp}0x initializer lists where they're available (currently
zh-hans	在可用时支持 C{plus}{plus}0x 初始化列表（当前

en	only g++ 4.4 in {cpp}0x mode).
zh-hans	仅 g{plus}{plus} 4.4 的 C{plus}{plus}0x 模式）。

en	Release 1.37.0
zh-hans	版本 1.37.0

en	Rename overload of `emplace` with hint, to `emplace_hint` as specified in
zh-hans	将带提示的 `emplace` 重载更名为 `emplace++_++hint` 。

en	http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2691.pdf[n2691^].
zh-hans	（根据 http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2691.pdf[n2691^] 规范）

en	Provide forwarding headers at `<boost/unordered/unordered_map_fwd.hpp>` and
zh-hans	在 `<boost unordered="" unordered_map_fwd.hpp="">` 与</boost>

en	`<boost/unordered/unordered_set_fwd.hpp>`.
zh-hans	`<boost unordered="" unordered_set_fwd.hpp="">` 路径下提供前向声明头文件。</boost>

en	Move all the implementation inside `boost/unordered`, to assist
zh-hans	将所有实现移至 `boost/unordered` 内，以支持

en	modularization and hopefully make it easier to track Release subversion.
zh-hans	模块化并便于跟踪发布版本。

en	Release 1.36.0
zh-hans	版本 1.36.0

en	First official release.
zh-hans	首次正式发布。

en	Rearrange the internals.
zh-hans	调整内部结构。

en	Move semantics - full support when rvalue references are available, emulated
zh-hans	移动语义：在支持右值引用的环境中提供完整支持，否则

en	using a cut down version of the Adobe move library when they are not.
zh-hans	使用精简版 Adobe 移动库进行模拟实现。

en	Emplace support when rvalue references and variadic template are available.
zh-hans	支持右值引用和变参模板时提供就地构造支持。

en	More efficient node allocation when rvalue references and variadic template
zh-hans	节点分配效率更高（当右值引用和变参模板

en	are available.
zh-hans	可用时）。

en	Added equality operators.
zh-hans	新增相等性判断运算符。

en	Boost 1.35.0 Add-on - 31st March 2008
zh-hans	Boost 1.35.0 附加版本 - 2008年3月31日

en	Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated many of the suggestions from the review.
zh-hans	非官方版本已上传至资源库，适用于 Boost 1.35.0。该版本已采纳评审阶段的多项改进建议。

en	Improved portability thanks to Boost regression testing.
zh-hans	通过 Boost 回归测试，代码可移植性得到显著提升。

en	Fix lots of typos, and clearer text in the documentation.
zh-hans	修正文档中的多处笔误，并优化文本表述以提升可读性。

en	Fix floating point to `std::size_t` conversion when calculating sizes from
zh-hans	修复根据最大负载因子计算容器大小时，浮点数到 `std::size_t` 的转换问题，

en	the max load factor, and use `double` in the calculation for greater accuracy.
zh-hans	并在计算过程中使用 `double` 类型来提高精度。

en	Fix some errors in the examples.
zh-hans	修正示例中的部分错误。

en	Review Version
zh-hans	评审版本

en	Initial review version, for the review conducted from 7th December 2007 to 16th December 2007.
zh-hans	初始评审版本（评审时间：2007年12月7日至12月16日）。