mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
flat_set/map: use boost::totally_ordered
This commit is contained in:
parent
f520599ab7
commit
3fb5a3702e
@ -39,6 +39,7 @@
|
|||||||
#include <boost/container/small_vector.hpp>
|
#include <boost/container/small_vector.hpp>
|
||||||
#include <boost/functional/hash/hash_fwd.hpp>
|
#include <boost/functional/hash/hash_fwd.hpp>
|
||||||
#include <boost/iterator/iterator_facade.hpp>
|
#include <boost/iterator/iterator_facade.hpp>
|
||||||
|
#include <boost/operators.hpp>
|
||||||
#include <boost/unordered/unordered_map.hpp>
|
#include <boost/unordered/unordered_map.hpp>
|
||||||
#include <boost/unordered/unordered_set.hpp>
|
#include <boost/unordered/unordered_set.hpp>
|
||||||
|
|
||||||
@ -120,7 +121,8 @@ protected:
|
|||||||
*/
|
*/
|
||||||
template <class T, class Compare = std::less<T>,
|
template <class T, class Compare = std::less<T>,
|
||||||
class Allocator = std::allocator<T>>
|
class Allocator = std::allocator<T>>
|
||||||
class flat_set : flat_detail::flat_base<T, Compare, Allocator> {
|
class flat_set : flat_detail::flat_base<T, Compare, Allocator>,
|
||||||
|
boost::totally_ordered<flat_set<T, Compare, Allocator>> {
|
||||||
using base_type = flat_detail::flat_base<T, Compare, Allocator>;
|
using base_type = flat_detail::flat_base<T, Compare, Allocator>;
|
||||||
using storage_type = typename base_type::storage_type;
|
using storage_type = typename base_type::storage_type;
|
||||||
|
|
||||||
@ -315,26 +317,14 @@ public:
|
|||||||
return comp();
|
return comp();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Operators.
|
// Operators. All others provided by boost::totally_ordered.
|
||||||
|
|
||||||
bool operator==(const flat_set &a) const {
|
bool operator==(const flat_set &a) const {
|
||||||
return data() == a.data();
|
return data() == a.data();
|
||||||
}
|
}
|
||||||
bool operator!=(const flat_set &a) const {
|
|
||||||
return data() != a.data();
|
|
||||||
}
|
|
||||||
bool operator<(const flat_set &a) const {
|
bool operator<(const flat_set &a) const {
|
||||||
return data() < a.data();
|
return data() < a.data();
|
||||||
}
|
}
|
||||||
bool operator<=(const flat_set &a) const {
|
|
||||||
return data() <= a.data();
|
|
||||||
}
|
|
||||||
bool operator>(const flat_set &a) const {
|
|
||||||
return data() > a.data();
|
|
||||||
}
|
|
||||||
bool operator>=(const flat_set &a) const {
|
|
||||||
return data() >= a.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Free swap function for ADL.
|
// Free swap function for ADL.
|
||||||
friend void swap(flat_set &a, flat_set &b) {
|
friend void swap(flat_set &a, flat_set &b) {
|
||||||
@ -363,7 +353,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
template <class Key, class T, class Compare = std::less<Key>,
|
template <class Key, class T, class Compare = std::less<Key>,
|
||||||
class Allocator = std::allocator<std::pair<Key, T>>>
|
class Allocator = std::allocator<std::pair<Key, T>>>
|
||||||
class flat_map : flat_detail::flat_base<std::pair<Key, T>, Compare, Allocator> {
|
class flat_map : flat_detail::flat_base<std::pair<Key, T>, Compare, Allocator>,
|
||||||
|
boost::totally_ordered<flat_map<Key, T, Compare, Allocator>> {
|
||||||
public:
|
public:
|
||||||
// Member types.
|
// Member types.
|
||||||
using key_type = Key;
|
using key_type = Key;
|
||||||
@ -626,26 +617,14 @@ public:
|
|||||||
return value_compare(comp());
|
return value_compare(comp());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Operators.
|
// Operators. All others provided by boost::totally_ordered.
|
||||||
|
|
||||||
bool operator==(const flat_map &a) const {
|
bool operator==(const flat_map &a) const {
|
||||||
return data() == a.data();
|
return data() == a.data();
|
||||||
}
|
}
|
||||||
bool operator!=(const flat_map &a) const {
|
|
||||||
return data() != a.data();
|
|
||||||
}
|
|
||||||
bool operator<(const flat_map &a) const {
|
bool operator<(const flat_map &a) const {
|
||||||
return data() < a.data();
|
return data() < a.data();
|
||||||
}
|
}
|
||||||
bool operator<=(const flat_map &a) const {
|
|
||||||
return data() <= a.data();
|
|
||||||
}
|
|
||||||
bool operator>(const flat_map &a) const {
|
|
||||||
return data() > a.data();
|
|
||||||
}
|
|
||||||
bool operator>=(const flat_map &a) const {
|
|
||||||
return data() >= a.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Free swap function for ADL.
|
// Free swap function for ADL.
|
||||||
friend void swap(flat_map &a, flat_map &b) {
|
friend void swap(flat_map &a, flat_map &b) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user