59 void insert(Key
const &first, Key
const &last, Value &&value)
noexcept {
60 tt_assert(last > first);
63 auto first_ = find(first);
64 auto last_ = find(last);
68 tt_axiom(first_ != items.
end());
69 if (first_->first != first) {
71 ttlet tmp_last = first_->last;
74 first_ = items.
emplace(first_ + 1, first, tmp_last, first_->values);
75 last_ = first_ + delta;
78 tt_axiom(last_ != items.
end());
79 if (last_->last != last) {
81 ttlet tmp_first = last_->first;
84 last_ = items.
emplace(last_, tmp_first, last, first_->values);
85 first_ = last_ - delta;
88 tt_axiom(last_ != items.
end());
90 for (
auto i = first_; i != last_; ++i) {
100 auto p = items.
begin();
101 values_set.insert(p->values);
102 for (
auto i = p + 1; i != items.
end(); p = i++) {
104 ttlet [deduplicated_values, dummy] = values_set.insert(i->values);
105 i->values = *deduplicated_values;
107 if (can_be_merged(*p, *i)) {