10#ifndef FLATSET_TYPE_HPP
11#define FLATSET_TYPE_HPP
19template <
class Tkey,
class Tcompare = std::less<>>
23 using const_iterator = std::vector<Tkey>::const_iterator;
31 std::pair<const_iterator, bool>
insert(
const Tkey &key)
33 auto it = std::ranges::lower_bound(this->data, key, Tcompare{});
34 if (it == std::end(this->data) || *it != key)
return {this->data.emplace(it, key),
true};
31 std::pair<const_iterator, bool>
insert(
const Tkey &key) {
…}
45 auto it = std::ranges::lower_bound(this->data, key, Tcompare{});
46 if (it == std::end(this->data) || *it != key)
return 0;
59 return std::ranges::binary_search(this->data, key, Tcompare{});
62 const_iterator begin()
const {
return std::cbegin(this->data); }
63 const_iterator end()
const {
return std::cend(this->data); }
65 const_iterator cbegin()
const {
return std::cbegin(this->data); }
66 const_iterator cend()
const {
return std::cend(this->data); }
68 size_t size()
const {
return std::size(this->data); }
69 bool empty()
const {
return this->data.empty(); }
71 void clear() { this->data.clear(); }
Flat set implementation that uses a sorted vector for storage.
bool contains(const Tkey &key)
Test if a key exists in the set.
size_t erase(const Tkey &key)
Erase a key from the set.
std::vector< Tkey > data
Sorted vector. of values.
std::pair< const_iterator, bool > insert(const Tkey &key)
Insert a key into the set, if it does not already exist.