Untitled
unknown
plain_text
a month ago
1.9 kB
8
Indexable
if (!(keyBegin < keyEnd)) return; if (m_map.empty()) { m_map.insert(std::pair<K,V>(keyBegin, val)); m_map.insert(std::pair<K,V>(keyEnd, m_valBegin)); return; } auto itBegin = m_map.lower_bound(keyBegin); auto itBeginTmp = itBegin; V valCurr = itBeginTmp->second; if (keyBegin < itBeginTmp->first) { if (itBeginTmp == m_map.begin()) { valCurr = m_valBegin; } else { valCurr = (--itBeginTmp)->second; } } auto itDelBegin = m_map.insert(itBegin, std::pair<K,V>(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 itInsBegin = m_map.insert_or_assign(itCurr, keyBegin, val); auto itInsBeginTmp = itInsBegin; if (!(itInsBegin == m_map.begin()) && (--itInsBeginTmp)->second == itInsBegin->second) { m_map.erase(itInsBegin); } 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); } if (m_map.size() == 1 && m_map.begin()->second == m_valBegin) { m_map.erase(m_map.begin()); }
Editor is loading...
Leave a Comment