Untitled
unknown
plain_text
a month ago
1.1 kB
4
Indexable
if (!(keyBegin < keyEnd)) return; auto itBegin = m_map.lower_bound(keyBegin); //log(n) V valCurr = itBegin->second; if (keyBegin < itBegin->first) { if (itBegin == m_map.begin()) { valCurr = m_valBegin; } else { valCurr = (--itBegin)->second; } } auto itDelBegin = m_map.insert_or_assign(itBegin, keyBegin, val); if (itDelBegin == m_map.begin()) { if (!(val == m_valBegin)) { ++itDelBegin; } } else { if (!((--itDelBegin)->second == val)) { ++itDelBegin; } ++itDelBegin; } auto itCurr = itDelBegin; while (itCurr != m_map.end()) { if (keyEnd < itCurr->first) { break; } valCurr = itCurr->second; itCurr = m_map.erase(itCurr); } auto itEnd = m_map.insert(itCurr, std::pair<K,V>(keyEnd, valCurr)); auto itEndTmp = itEnd; if ((itEnd != m_map.end()) && ((++itEnd)->second == valCurr)) { m_map.erase(itEnd); } if ((--itEndTmp)->second == valCurr) { m_map.erase(++itEndTmp); }
Editor is loading...
Leave a Comment