diff --git a/flat_map.hpp b/flat_map.hpp index 3ad42db..c882c9f 100644 --- a/flat_map.hpp +++ b/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 equal_range(const key_type& key) { + //TODO(BlackMat): implme + return {end(), end()}; + } + + std::pair 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_; diff --git a/flat_map_tests.cpp b/flat_map_tests.cpp index 0b8ef77..d1d8283 100644 --- a/flat_map_tests.cpp +++ b/flat_map_tests.cpp @@ -27,6 +27,11 @@ namespace (void)n; } }; + + template < typename T > + constexpr std::add_const_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; + 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); + } } diff --git a/flat_set.hpp b/flat_set.hpp index 0478ddf..f985ada 100644 --- a/flat_set.hpp +++ b/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 equal_range(const key_type& key) { + //TODO(BlackMat): implme + return {end(), end()}; + } + + std::pair 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_; diff --git a/flat_set_tests.cpp b/flat_set_tests.cpp index cea309e..f251a15 100644 --- a/flat_set_tests.cpp +++ b/flat_set_tests.cpp @@ -27,6 +27,11 @@ namespace (void)n; } }; + + template < typename T > + constexpr std::add_const_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; + 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); + } }