Skip to content

Types

This table summarizes the public types in a pareto::front<K,M,T,C>:

Concept/Type Name Type Notes
Container
value_type container_type::value_type The pair key is const, like in other associative containers
reference value_type&
const_reference value_type const &
iterator Iterator pointing to a value_type A LegacyBidirectionalIterator convertible to const_iterator
const_iterator Iterator pointing to a const value_type Implements LegacyBidirectionalIterator concept
difference_type A signed integer
size_type An unsigned integer
ReversibleContainer
reverse_iterator std::reverse_iterator<iterator>
const_reverse_iterator std::reverse_iterator<const_iterator>
AssociativeContainer
key_type pareto::point<K,M> Unlike in value_type, key_type is not const, so you can use it to construct and manipulate new points
mapped_type T
key_compare std::function<bool(const value_type &, const value_type &)> key_compare defines a lexicographic ordering relation over keys using dimension_compare
value_compare std::function<bool(const value_type &, const value_type &)> value_compare defines an ordering relation over value_type using key_compare
AllocatorAwareContainer
allocator_type container_type::allocator_type allocator_type::value_type is the same as value_type
SpatialContainer
dimension_type K
dimension_compare container_type::dimension_compare, or std::less<K> by default dimension_compare defines an ordering relation over each key_value dimension using C
box_type pareto::query_box<dimension_type, M>
predicate_list_type pareto::predicate_list<dimension_type, M, T>
SpatialAdapter
container_type C C needs to follow the SpatialContainer concept

Notes

The underlying container C (or front::container_type) used to store the values also needs to be a SpatialContainer. The allocator type and comparison functions are provided by these containers. If no container is provided, the default pareto::spatial_map is used as default.

Concepts

All other requirements of a SpatialContainer also apply here. Even if you only intend to use fronts in your application, we recommend you to read the sections on spatial containers.

Container Adapters

The type names and template parameters for the SpatialAdapter concept are inspired by other container adapters, such as std::stack. However, pareto::front is both an adapter and an extension of SpatialContainer. That is, unlike std::stack, its interface expands on top of the underlying container rather than limiting it.