13 #ifndef SPATIAL_BOX_MULTIMAP_HPP
14 #define SPATIAL_BOX_MULTIMAP_HPP
18 #include "function.hpp"
19 #include "bits/spatial_check_concept.hpp"
20 #include "bits/spatial_relaxed_kdtree.hpp"
30 typename Compare = bracket_less<Key>,
31 typename BalancingPolicy = loose_balancing,
32 typename Alloc = std::allocator<std::pair<const Key, Mapped> > >
35 std::pair<const Key, Mapped>,
36 Compare, BalancingPolicy, Alloc>
46 BalancingPolicy, Alloc>
Self;
54 : base_type(details::Static_rank<Rank>(), compare)
58 : base_type(details::Static_rank<Rank>(), compare, balancing)
63 : base_type(details::Static_rank<Rank>(), compare, balancing, alloc)
89 template<
typename Key,
typename Mapped,
91 typename BalancingPolicy,
93 struct box_multimap<0, Key, Mapped, Compare, BalancingPolicy, Alloc>
95 std::pair<const Key, Mapped>, Compare,
96 BalancingPolicy, Alloc>
111 : base_type(details::Dynamic_rank(dim))
115 : base_type(details::Dynamic_rank(dim), compare)
119 const BalancingPolicy& policy)
120 : base_type(details::Dynamic_rank(dim), compare, policy)
124 const BalancingPolicy& policy,
const Alloc& alloc)
125 : base_type(details::Dynamic_rank(dim), compare, policy, alloc)
129 : base_type(details::Dynamic_rank(2), compare)
133 : base_type(details::Dynamic_rank(2), compare, policy)
138 : base_type(details::Dynamic_rank(2), compare, policy, alloc)
152 #endif // SPATIAL_BOX_MULTIMAP_HPP
Relaxed_kdtree & operator=(const Relaxed_kdtree &other)
Assignment of other into the tree, with deep copy.
box_multimap(dimension_type dim, const Compare &compare, const BalancingPolicy &policy)
Detailed implementation of the kd-tree.
details::Relaxed_kdtree< details::Dynamic_rank, const Key, std::pair< const Key, Mapped >, Compare, BalancingPolicy, Alloc > base_type
The dimension value is stored by a member of the object, but can be modified at run time...
A mapped containers to store values in space that can be represented as boxes.
box_multimap & operator=(const box_multimap &other)
box_multimap(const Compare &compare, const BalancingPolicy &policy, const Alloc &alloc)
box_multimap(const box_multimap &other)
void check_even_rank(dimension_type rank)
Checks that rank is not null and that it is a multiple of 2.
box_multimap(const Compare &compare, const BalancingPolicy &balancing)
balancing_policy balancing() const
Returns the balancing policy for the container.
box_multimap(const Compare &compare)
enable_if_c<(Rank &1u)==0 >::type check_concept_dimension_is_even
box_multimap(dimension_type dim)
std::size_t dimension_type
Defines the type for the dimension as being a size.
box_multimap< 0, Key, Mapped, Compare, BalancingPolicy, Alloc > Self
If B is true, spatial::enable_if has a public member typedef type, equal to Tp; otherwise, there is no member typedef.
The dimension value is set by a template value, thus consuming no memory.
The main namespace used in the library.
box_multimap(const Compare &compare, const BalancingPolicy &balancing, const Alloc &alloc)
box_multimap(const Compare &compare, const BalancingPolicy &policy)
details::Relaxed_kdtree< details::Static_rank< Rank >, const Key, std::pair< const Key, Mapped >, Compare, BalancingPolicy, Alloc > base_type
box_multimap(dimension_type dim, const Compare &compare, const BalancingPolicy &policy, const Alloc &alloc)
box_multimap(const box_multimap &other)
box_multimap(dimension_type dim, const Compare &compare)
box_multimap(const Compare &compare)
box_multimap< Rank, Key, Mapped, Compare, BalancingPolicy, Alloc > Self
box_multimap & operator=(const box_multimap &other)