mirror of
https://github.com/BlackMATov/flat.hpp.git
synced 2025-12-16 22:16:58 +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(); }
|
iterator begin() noexcept { return data_.begin(); }
|
||||||
const_iterator begin() const 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(); }
|
iterator end() noexcept { return data_.end(); }
|
||||||
const_iterator end() const 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(); }
|
reverse_iterator rbegin() noexcept { return data_.rbegin(); }
|
||||||
const_reverse_iterator rbegin() const 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(); }
|
reverse_iterator rend() noexcept { return data_.rend(); }
|
||||||
const_reverse_iterator rend() const 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
|
//TODO(BlackMat): implme
|
||||||
return std::make_pair(end(), false);
|
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
|
//TODO(BlackMat): implme
|
||||||
return std::make_pair(end(), false);
|
return std::make_pair(end(), false);
|
||||||
}
|
}
|
||||||
@@ -119,6 +130,18 @@ namespace flat_hpp
|
|||||||
insert(*iter);
|
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:
|
private:
|
||||||
data_type data_;
|
data_type data_;
|
||||||
key_compare compare_;
|
key_compare compare_;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("flat_map") {
|
TEST_CASE("flat_map") {
|
||||||
{
|
SECTION("types") {
|
||||||
using map_t = flat_map<int, unsigned>;
|
using map_t = flat_map<int, unsigned>;
|
||||||
|
|
||||||
static_assert(
|
static_assert(
|
||||||
@@ -64,7 +64,7 @@ TEST_CASE("flat_map") {
|
|||||||
std::is_same<map_t::const_pointer, const std::pair<const int, unsigned>*>::value,
|
std::is_same<map_t::const_pointer, const std::pair<const int, unsigned>*>::value,
|
||||||
"unit test static error");
|
"unit test static error");
|
||||||
}
|
}
|
||||||
{
|
SECTION("ctors") {
|
||||||
using alloc_t = dummy_allocator<
|
using alloc_t = dummy_allocator<
|
||||||
std::pair<const int,unsigned>>;
|
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());
|
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(); }
|
iterator begin() noexcept { return data_.begin(); }
|
||||||
const_iterator begin() const 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(); }
|
iterator end() noexcept { return data_.end(); }
|
||||||
const_iterator end() const 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(); }
|
reverse_iterator rbegin() noexcept { return data_.rbegin(); }
|
||||||
const_reverse_iterator rbegin() const 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(); }
|
reverse_iterator rend() noexcept { return data_.rend(); }
|
||||||
const_reverse_iterator rend() const 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
|
//TODO(BlackMat): implme
|
||||||
return std::make_pair(end(), false);
|
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
|
//TODO(BlackMat): implme
|
||||||
return std::make_pair(end(), false);
|
return std::make_pair(end(), false);
|
||||||
}
|
}
|
||||||
@@ -118,6 +129,18 @@ namespace flat_hpp
|
|||||||
insert(*iter);
|
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:
|
private:
|
||||||
data_type data_;
|
data_type data_;
|
||||||
key_compare compare_;
|
key_compare compare_;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("flat_set") {
|
TEST_CASE("flat_set") {
|
||||||
{
|
SECTION("types") {
|
||||||
using set_t = flat_set<int>;
|
using set_t = flat_set<int>;
|
||||||
|
|
||||||
static_assert(
|
static_assert(
|
||||||
@@ -61,7 +61,7 @@ TEST_CASE("flat_set") {
|
|||||||
std::is_same<set_t::const_pointer, const int*>::value,
|
std::is_same<set_t::const_pointer, const int*>::value,
|
||||||
"unit test static error");
|
"unit test static error");
|
||||||
}
|
}
|
||||||
{
|
SECTION("ctors") {
|
||||||
using alloc_t = dummy_allocator<int>;
|
using alloc_t = dummy_allocator<int>;
|
||||||
using set_t = flat_set<int, std::less<int>, alloc_t>;
|
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());
|
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