Commit Graph

131 Commits

Author SHA1 Message Date
Ion Gaztañaga
90be67e81f Improved placement proxy to avoid temporary objects when constructing from values from the target type.
Added testcase based on Howard Hinnant's "Insert vs. Emplace" article.
2014-08-02 21:30:39 +02:00
Ion Gaztañaga
d849f80ea5 Removed tabs. 2014-07-30 16:32:55 +02:00
Ion Gaztañaga
52af899129 Merge branch 'aix_fix' of https://github.com/ibmsoe/container into ibmsoe-aix_fix 2014-07-30 16:20:15 +02:00
Ion Gaztañaga
941eb27e1d Updated and documented non-standard optimizations based on memset 2014-07-20 14:43:12 +02:00
Axel Ismirlian
960d649e99 Added missing AIX definition for sched.h (previously out of scope). 2014-07-16 15:48:12 -05:00
Ion Gaztañaga
819b365f5e Fixed unqualified iterator_to_pointer & to_raw_pointer calls that were causing compilation problems due to ADL. 2014-06-16 00:23:19 +02:00
Ion Gaztañaga
4ea1e46fcd Replaced several "addressof()" uses with the more correct "iterator_to_raw_pointer".
Updated changelist with bug #9637.
2014-06-14 22:50:53 +02:00
Ion Gaztañaga
5afad7cd0c Added optimization for types that can be value initialized with memset. 2014-06-14 12:41:58 +02:00
Ion Gaztañaga
9c582e906a Documentation fixes:
* allocator_traits was not properly placed in namespace boost::container.qbk
* Fixed some typos
* Added "Known Issues" section with move emulation problems.
2014-06-13 10:49:09 +02:00
Ion Gaztañaga
ac7fb5a86b Replaced incorrect "&*iterator" expressions (which fails with value_types with overloaded "operator&") with "iterator_to_raw_pointer" or "iterator_to_pointer" utilities. 2014-06-12 10:01:52 +02:00
Ion Gaztañaga
bf5c140180 Added missing "element_type" to the pseudo-pointer operator_arrow_proxy to be compatible with pointer_traits 2014-06-12 10:01:38 +02:00
Ion Gaztañaga
9ec026937b Use pointer traits to obtain element_type in "to_raw_pointer" 2014-06-11 15:54:54 +02:00
Ion Gaztañaga
c2100f349e Removed dead comment 2014-06-11 14:58:43 +02:00
Ion Gaztañaga
11721001a3 Removed unused Boost.MPL and Boost.Iterator includes. 2014-06-09 06:40:39 +02:00
Ion Gaztañaga
790a8798d4 Fixes Trac issue #9801 ("I can no longer create and iterator_range from a stable_vector") 2014-06-06 13:21:03 +02:00
Ion Gaztañaga
8c1bfe2881 Removed trailing whitespaces 2014-05-28 15:50:13 +02:00
Ion Gaztañaga
a67982bd07 Fixes #9955 (Using memcpy with overlapped buffers in vector) 2014-04-26 13:14:36 +02:00
Ion Gaztañaga
9b25c7134e * Fixed BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment) missing ::value
* Optimized insert_equal(ordered_range_t,...) and insert_unique(ordered_unique_range_t, ...) for elements to be inserted in the end.

* Added range insertion overload (non-standard extension) to vector taking the number of elements to avoid reiterations with std::distance.
2014-04-23 23:18:18 +02:00
Ion Gaztañaga
71b99683b9 Reverted a (premature) optimization that can lead to out of bound write. 2014-04-21 22:52:06 +02:00
Ion Gaztañaga
5013f3fd69 Fixes #9931 ("flat_map::insert(ordered_unique_range_t...) fails with move_iterators") 2014-04-21 21:23:24 +02:00
Ion Gaztañaga
0b720f82b4 Fixed #9916: "Allocator propagation incorrect in the assignment operator of most".
Fixed #9932: "Missing assignment operator from related static_vector".
Added missing details from issue #9915
2014-04-21 13:59:49 +02:00
Ion Gaztañaga
bffd6c036c Fixes #9915.
Uses intrusive is_convertible in MSVC compilers.
Removes some throw conditions in the documentation produced by the allocator copy constructor (as the standard requires no-throw guarantee for those).
2014-04-17 00:06:59 +02:00
Ion Gaztañaga
ba596fc83c Fixes #9648, (string construction optimization) 2014-02-11 15:05:35 +01:00
Ion Gaztañaga
a4c0188173 Divided set benchmark in several smaller benchmark files 2014-02-06 11:13:22 +01:00
Ion Gaztañaga
a4b839628a Implemented unique associative containers' equal_range using lower_bound_range which is more efficient with heavy comparison functions.
Updated benchmark to avoid measuring redundant operations in searches.
2014-01-20 13:20:02 +01:00
Ion Gaztañaga
abc50c7275 Improved unique associative container count function. Improved also flat_xxx's equal_range. 2014-01-19 19:18:57 +01:00
Ion Gaztañaga
a93e23f22a Inherit set/multiset/map/multimap from tree to avoid redundant instantiations in debug mode and simplify maintenance. 2014-01-05 22:36:01 +01:00
Ion Gaztañaga
3af1cdefe0 Inherit flat_set/flat_multiset from flat_tree to avoid code instantiation in debug mode and several trivial functions. Declarations still there for doxygen documentation. 2014-01-05 22:29:33 +01:00
Ion Gaztañaga
4872931d29 Documented template parameters. 2014-01-05 22:25:12 +01:00
Ion Gaztañaga
2b8f88b034 Documented template parameters 2014-01-03 14:52:56 +01:00
Ion Gaztañaga
d3eb21000b Derived flat_set from flat_tree to avoid redefining almost all functions and minimize instantiation of multiple function in debug mode. 2014-01-03 14:52:13 +01:00
Ion Gaztañaga
01486761a6 Added support for configurable tree-based associative containers. In addition to RB trees, AVL, Scapegoat and Splay trees are experimentally supported. 2014-01-03 13:26:57 +01:00
Ion Gaztañaga
2489010881 Document comparison operators for non tree associative containers. 2014-01-03 12:43:03 +01:00
Ion Gaztañaga
4dc3df6b6b Use "insert_after" instead of "insert" to avoid unneeded checks. 2014-01-03 10:37:09 +01:00
Ion Gaztañaga
9ac4ae6fdc Added a static assert to make sure that flat_[xxx]map::allocator_type::value_type is std::pair<Key, T>. Fixed some test cases failing to do that properly. 2013-12-24 19:00:52 +01:00
Ion Gaztañaga
95e6ba9839 Extracted key_node_compare from tree to tidy a bit the implementation and ease maintenance. 2013-12-24 18:58:01 +01:00
Ion Gaztañaga
ed0704797d Refactored tree cloners into a single standalone class to avoid unnecessary instantiations and simplify maintenance. 2013-12-24 12:58:28 +01:00
Ion Gaztañaga
41c2056ec6 - Modified relational operators to be friend inline definitions. This allows compilation checking when instantiating classes, avoids predeclarations and results in less verbose code.
- First to make associative containers' tree implementation configurable.
2013-12-23 23:34:28 +01:00
Ion Gaztañaga
f2947c115e Changes during Git migration:
- Added Extended Allocator support for Boost.Container.
- Improved Doxygen generated reference
- Fixed ticket #9338 ("VS2005 compiler errors in swap() definition after including container/memory_util.hpp")
2013-12-23 10:47:20 +01:00
Ion Gaztañaga
b1d4ef3a2e Fixes #9338
[SVN r86748]
2013-11-18 09:32:44 +00:00
Ion Gaztañaga
62227ae741 Fixed typo causing errors in clang builds.
[SVN r86045]
2013-09-30 04:47:29 +00:00
Ion Gaztañaga
3921e08520 Tagged vector_alloc_holder constructors that allocate but don't initialize memory to improve maintainability.
[SVN r85997]
2013-09-29 11:37:30 +00:00
Ion Gaztañaga
5b9b2c26dc Implemented 2x grow factor for vector capacity
[SVN r85996]
2013-09-29 11:36:06 +00:00
Ion Gaztañaga
14f092ab00 Default initialization for vector-like containers
Complexity guarantees for associative container constructors and ordered input ranges
Added benchmark for associative containers
Fixes #9166

[SVN r85964]
2013-09-26 18:05:25 +00:00
Stephen Kelly
59b2793df7 Remove obsolete MSVC check from pragma guard
git grep -h -B1 "^#\s*pragma once" | grep -v pragma | sort | uniq

is now clean.

[SVN r85952]
2013-09-26 13:02:51 +00:00
Stephen Kelly
eb4b320fed Container: Fix two pragma guards.
Fix typo in the MSC_VER macro check

[SVN r85923]
2013-09-25 21:17:34 +00:00
Ion Gaztañaga
a7b88d804c Fixes #9009
[SVN r85660]
2013-09-12 22:00:51 +00:00
Ion Gaztañaga
ed57e6e619 Fixes #9108
[SVN r85658]
2013-09-12 21:50:38 +00:00
Ion Gaztañaga
5a4073434b Removed SGI copyright as after rewrites it is no longer applicable.
[SVN r85625]
2013-09-09 19:26:50 +00:00
Ion Gaztañaga
3e945acc9b Fixes #9092
[SVN r85612]
2013-09-08 18:58:21 +00:00