mirror of
https://github.com/BlackMATov/flat.hpp.git
synced 2025-12-13 01:36:27 +07:00
add lookup interface
This commit is contained in:
45
flat_map.hpp
45
flat_map.hpp
@@ -177,6 +177,51 @@ namespace flat_hpp
|
||||
void swap(flat_map& other) {
|
||||
//TODO(BlackMat): implme
|
||||
}
|
||||
|
||||
size_type count(const key_type& key) const {
|
||||
const auto iter = find(key);
|
||||
return iter != end() ? 1 : 0;
|
||||
}
|
||||
|
||||
iterator find(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator find(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
std::pair<iterator, iterator> equal_range(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return {end(), end()};
|
||||
}
|
||||
|
||||
std::pair<const_iterator, const_iterator> equal_range(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return {end(), end()};
|
||||
}
|
||||
|
||||
iterator lower_bound(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator lower_bound(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
iterator upper_bound(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator upper_bound(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
private:
|
||||
data_type data_;
|
||||
key_compare compare_;
|
||||
|
||||
@@ -27,6 +27,11 @@ namespace
|
||||
(void)n;
|
||||
}
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
constexpr std::add_const_t<T>& my_as_const(T& t) noexcept {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("flat_map") {
|
||||
@@ -134,4 +139,17 @@ TEST_CASE("flat_map") {
|
||||
s0.swap(s1);
|
||||
swap(s0, s1);
|
||||
}
|
||||
SECTION("lookup") {
|
||||
using map_t = flat_map<int, unsigned>;
|
||||
map_t s0;
|
||||
s0.count(10);
|
||||
s0.find(10);
|
||||
my_as_const(s0).find(10);
|
||||
s0.equal_range(20);
|
||||
my_as_const(s0).equal_range(20);
|
||||
s0.lower_bound(30);
|
||||
my_as_const(s0).lower_bound(30);
|
||||
s0.upper_bound(30);
|
||||
my_as_const(s0).upper_bound(30);
|
||||
}
|
||||
}
|
||||
|
||||
45
flat_set.hpp
45
flat_set.hpp
@@ -176,6 +176,51 @@ namespace flat_hpp
|
||||
void swap(flat_set& other) {
|
||||
//TODO(BlackMat): implme
|
||||
}
|
||||
|
||||
size_type count(const key_type& key) const {
|
||||
const auto iter = find(key);
|
||||
return iter != end() ? 1 : 0;
|
||||
}
|
||||
|
||||
iterator find(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator find(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
std::pair<iterator, iterator> equal_range(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return {end(), end()};
|
||||
}
|
||||
|
||||
std::pair<const_iterator, const_iterator> equal_range(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return {end(), end()};
|
||||
}
|
||||
|
||||
iterator lower_bound(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator lower_bound(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
iterator upper_bound(const key_type& key) {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
|
||||
const_iterator upper_bound(const key_type& key) const {
|
||||
//TODO(BlackMat): implme
|
||||
return end();
|
||||
}
|
||||
private:
|
||||
data_type data_;
|
||||
key_compare compare_;
|
||||
|
||||
@@ -27,6 +27,11 @@ namespace
|
||||
(void)n;
|
||||
}
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
constexpr std::add_const_t<T>& my_as_const(T& t) noexcept {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("flat_set") {
|
||||
@@ -125,4 +130,17 @@ TEST_CASE("flat_set") {
|
||||
s0.swap(s1);
|
||||
swap(s0, s1);
|
||||
}
|
||||
SECTION("lookup") {
|
||||
using set_t = flat_set<int>;
|
||||
set_t s0;
|
||||
s0.count(10);
|
||||
s0.find(10);
|
||||
my_as_const(s0).find(10);
|
||||
s0.equal_range(20);
|
||||
my_as_const(s0).equal_range(20);
|
||||
s0.lower_bound(30);
|
||||
my_as_const(s0).lower_bound(30);
|
||||
s0.upper_bound(30);
|
||||
my_as_const(s0).upper_bound(30);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user