mirror of
https://github.com/BlackMATov/flat.hpp.git
synced 2025-12-15 10:16:20 +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) {
|
void swap(flat_map& other) {
|
||||||
//TODO(BlackMat): implme
|
//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:
|
private:
|
||||||
data_type data_;
|
data_type data_;
|
||||||
key_compare compare_;
|
key_compare compare_;
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ namespace
|
|||||||
(void)n;
|
(void)n;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr std::add_const_t<T>& my_as_const(T& t) noexcept {
|
||||||
|
return t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("flat_map") {
|
TEST_CASE("flat_map") {
|
||||||
@@ -134,4 +139,17 @@ TEST_CASE("flat_map") {
|
|||||||
s0.swap(s1);
|
s0.swap(s1);
|
||||||
swap(s0, 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) {
|
void swap(flat_set& other) {
|
||||||
//TODO(BlackMat): implme
|
//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:
|
private:
|
||||||
data_type data_;
|
data_type data_;
|
||||||
key_compare compare_;
|
key_compare compare_;
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ namespace
|
|||||||
(void)n;
|
(void)n;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
constexpr std::add_const_t<T>& my_as_const(T& t) noexcept {
|
||||||
|
return t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("flat_set") {
|
TEST_CASE("flat_set") {
|
||||||
@@ -125,4 +130,17 @@ TEST_CASE("flat_set") {
|
|||||||
s0.swap(s1);
|
s0.swap(s1);
|
||||||
swap(s0, 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