mirror of
https://github.com/BlackMATov/flat.hpp.git
synced 2025-12-15 02:12:23 +07:00
add dummy insert interface
This commit is contained in:
27
flat_map.hpp
27
flat_map.hpp
@@ -96,19 +96,30 @@ namespace flat_hpp
|
||||
|
||||
iterator begin() noexcept { return data_.begin(); }
|
||||
const_iterator begin() const noexcept { return data_.begin(); }
|
||||
const_iterator cbegin() const noexcept { return data_.cbegin(); }
|
||||
|
||||
iterator end() noexcept { return data_.end(); }
|
||||
const_iterator end() const noexcept { return data_.end(); }
|
||||
const_iterator cend() const noexcept { return data_.cend(); }
|
||||
|
||||
reverse_iterator rbegin() noexcept { return data_.rbegin(); }
|
||||
const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); }
|
||||
const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); }
|
||||
|
||||
reverse_iterator rend() noexcept { return data_.rend(); }
|
||||
const_reverse_iterator rend() const noexcept { return data_.rend(); }
|
||||
const_reverse_iterator crend() const noexcept { return data_.crend(); }
|
||||
|
||||
std::pair<iterator, bool> insert(value_type&& value) {
|
||||
template < typename P
|
||||
, typename = std::enable_if_t<std::is_constructible<value_type, P>::value> >
|
||||
std::pair<iterator, bool> insert(P&& p) {
|
||||
//TODO(BlackMat): implme
|
||||
return std::make_pair(end(), false);
|
||||
}
|
||||
|
||||
std::pair<iterator, bool> insert(const value_type& value) {
|
||||
template < typename P
|
||||
, typename = std::enable_if_t<std::is_constructible<value_type, P>::value> >
|
||||
std::pair<iterator, bool> insert(const_iterator hint, P&& p) {
|
||||
//TODO(BlackMat): implme
|
||||
return std::make_pair(end(), false);
|
||||
}
|
||||
@@ -119,6 +130,18 @@ namespace flat_hpp
|
||||
insert(*iter);
|
||||
}
|
||||
}
|
||||
|
||||
template < typename... Args >
|
||||
std::pair<iterator, bool> emplace(Args&&... args) {
|
||||
//TODO(BlackMat): implme
|
||||
return insert(value_type(std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
template < typename... Args >
|
||||
std::pair<iterator, bool> emplace_hint(const_iterator hint, Args&&... args) {
|
||||
//TODO(BlackMat): implme
|
||||
return insert(value_type(std::forward<Args>(args)...));
|
||||
}
|
||||
private:
|
||||
data_type data_;
|
||||
key_compare compare_;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("flat_map") {
|
||||
{
|
||||
SECTION("types") {
|
||||
using map_t = flat_map<int, unsigned>;
|
||||
|
||||
static_assert(
|
||||
@@ -64,7 +64,7 @@ TEST_CASE("flat_map") {
|
||||
std::is_same<map_t::const_pointer, const std::pair<const int, unsigned>*>::value,
|
||||
"unit test static error");
|
||||
}
|
||||
{
|
||||
SECTION("ctors") {
|
||||
using alloc_t = dummy_allocator<
|
||||
std::pair<const int,unsigned>>;
|
||||
|
||||
@@ -96,4 +96,22 @@ TEST_CASE("flat_map") {
|
||||
auto s3 = map_t({{0,1}, {1,2}}, std::less<int>(), alloc_t());
|
||||
}
|
||||
}
|
||||
SECTION("inserts") {
|
||||
struct obj_t {
|
||||
obj_t(int i) : i(i) {}
|
||||
int i;
|
||||
};
|
||||
|
||||
using map_t = flat_map<int, obj_t>;
|
||||
|
||||
{
|
||||
map_t s0;
|
||||
s0.insert(std::make_pair(1, 42));
|
||||
s0.insert(std::make_pair(2, obj_t(42)));
|
||||
s0.insert(s0.cend(), std::make_pair(3, 84));
|
||||
s0.insert(s0.cend(), std::make_pair(4, obj_t(84)));
|
||||
s0.emplace(5, 100500);
|
||||
s0.emplace_hint(s0.cend(), 6, 100500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
27
flat_set.hpp
27
flat_set.hpp
@@ -95,19 +95,30 @@ namespace flat_hpp
|
||||
|
||||
iterator begin() noexcept { return data_.begin(); }
|
||||
const_iterator begin() const noexcept { return data_.begin(); }
|
||||
const_iterator cbegin() const noexcept { return data_.cbegin(); }
|
||||
|
||||
iterator end() noexcept { return data_.end(); }
|
||||
const_iterator end() const noexcept { return data_.end(); }
|
||||
const_iterator cend() const noexcept { return data_.cend(); }
|
||||
|
||||
reverse_iterator rbegin() noexcept { return data_.rbegin(); }
|
||||
const_reverse_iterator rbegin() const noexcept { return data_.rbegin(); }
|
||||
const_reverse_iterator crbegin() const noexcept { return data_.crbegin(); }
|
||||
|
||||
reverse_iterator rend() noexcept { return data_.rend(); }
|
||||
const_reverse_iterator rend() const noexcept { return data_.rend(); }
|
||||
const_reverse_iterator crend() const noexcept { return data_.crend(); }
|
||||
|
||||
std::pair<iterator, bool> insert(value_type&& value) {
|
||||
template < typename P
|
||||
, typename = std::enable_if_t<std::is_constructible<value_type, P>::value> >
|
||||
std::pair<iterator, bool> insert(P&& p) {
|
||||
//TODO(BlackMat): implme
|
||||
return std::make_pair(end(), false);
|
||||
}
|
||||
|
||||
std::pair<iterator, bool> insert(const value_type& value) {
|
||||
template < typename P
|
||||
, typename = std::enable_if_t<std::is_constructible<value_type, P>::value> >
|
||||
std::pair<iterator, bool> insert(const_iterator hint, P&& p) {
|
||||
//TODO(BlackMat): implme
|
||||
return std::make_pair(end(), false);
|
||||
}
|
||||
@@ -118,6 +129,18 @@ namespace flat_hpp
|
||||
insert(*iter);
|
||||
}
|
||||
}
|
||||
|
||||
template < typename... Args >
|
||||
std::pair<iterator, bool> emplace(Args&&... args) {
|
||||
//TODO(BlackMat): implme
|
||||
return insert(value_type(std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
template < typename... Args >
|
||||
std::pair<iterator, bool> emplace_hint(const_iterator hint, Args&&... args) {
|
||||
//TODO(BlackMat): implme
|
||||
return insert(hint, value_type(std::forward<Args>(args)...));
|
||||
}
|
||||
private:
|
||||
data_type data_;
|
||||
key_compare compare_;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace
|
||||
}
|
||||
|
||||
TEST_CASE("flat_set") {
|
||||
{
|
||||
SECTION("types") {
|
||||
using set_t = flat_set<int>;
|
||||
|
||||
static_assert(
|
||||
@@ -61,7 +61,7 @@ TEST_CASE("flat_set") {
|
||||
std::is_same<set_t::const_pointer, const int*>::value,
|
||||
"unit test static error");
|
||||
}
|
||||
{
|
||||
SECTION("ctors") {
|
||||
using alloc_t = dummy_allocator<int>;
|
||||
using set_t = flat_set<int, std::less<int>, alloc_t>;
|
||||
|
||||
@@ -87,4 +87,22 @@ TEST_CASE("flat_set") {
|
||||
auto s3 = set_t({0,1,2}, std::less<int>(), alloc_t());
|
||||
}
|
||||
}
|
||||
SECTION("inserts") {
|
||||
struct obj_t {
|
||||
obj_t(int i) : i(i) {}
|
||||
int i;
|
||||
};
|
||||
|
||||
using set_t = flat_set<obj_t>;
|
||||
|
||||
{
|
||||
set_t s0;
|
||||
s0.insert(42);
|
||||
s0.insert(obj_t(42));
|
||||
s0.insert(s0.cend(), 84);
|
||||
s0.insert(s0.cend(), obj_t(84));
|
||||
s0.emplace(100500);
|
||||
s0.emplace_hint(s0.cend(), 100500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user