mirror of
https://github.com/BlackMATov/flat.hpp.git
synced 2025-12-13 09:45:38 +07:00
fix range merging order bug
This commit is contained in:
@@ -633,7 +633,7 @@ namespace flat_hpp
|
||||
void insert_range_(Iter first, Iter last) {
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::sort(mid_iter, data_.end(), value_comp());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), value_comp());
|
||||
data_.erase(
|
||||
std::unique(data_.begin(), data_.end(),
|
||||
detail::eq_compare<value_compare>(value_comp())),
|
||||
@@ -644,7 +644,7 @@ namespace flat_hpp
|
||||
void insert_range_(sorted_range_t, Iter first, Iter last) {
|
||||
assert(detail::is_sorted(first, last, value_comp()));
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), value_comp());
|
||||
data_.erase(
|
||||
std::unique(data_.begin(), data_.end(),
|
||||
detail::eq_compare<value_compare>(value_comp())),
|
||||
|
||||
@@ -568,14 +568,14 @@ namespace flat_hpp
|
||||
void insert_range_(Iter first, Iter last) {
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::sort(mid_iter, data_.end(), value_comp());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), value_comp());
|
||||
}
|
||||
|
||||
template < typename Iter >
|
||||
void insert_range_(sorted_range_t, Iter first, Iter last) {
|
||||
assert(detail::is_sorted(first, last, value_comp()));
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), value_comp());
|
||||
}
|
||||
private:
|
||||
container_type data_;
|
||||
|
||||
@@ -484,14 +484,14 @@ namespace flat_hpp
|
||||
void insert_range_(Iter first, Iter last) {
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::sort(mid_iter, data_.end(), key_comp());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), key_comp());
|
||||
}
|
||||
|
||||
template < typename Iter >
|
||||
void insert_range_(sorted_range_t, Iter first, Iter last) {
|
||||
assert(detail::is_sorted(first, last, key_comp()));
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), key_comp());
|
||||
}
|
||||
private:
|
||||
container_type data_;
|
||||
|
||||
@@ -549,7 +549,7 @@ namespace flat_hpp
|
||||
void insert_range_(Iter first, Iter last) {
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::sort(mid_iter, data_.end(), key_comp());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), key_comp());
|
||||
data_.erase(
|
||||
std::unique(data_.begin(), data_.end(),
|
||||
detail::eq_compare<key_compare>(key_comp())),
|
||||
@@ -560,7 +560,7 @@ namespace flat_hpp
|
||||
void insert_range_(sorted_range_t, Iter first, Iter last) {
|
||||
assert(detail::is_sorted(first, last, key_comp()));
|
||||
const auto mid_iter = data_.insert(data_.end(), first, last);
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end());
|
||||
std::inplace_merge(data_.begin(), mid_iter, data_.end(), key_comp());
|
||||
data_.erase(
|
||||
std::unique(data_.begin(), data_.end(),
|
||||
detail::eq_compare<key_compare>(key_comp())),
|
||||
|
||||
Reference in New Issue
Block a user