Untitled
unknown
plain_text
a year ago
2.6 kB
9
Indexable
void assign( K const& keyBegin, K const& keyEnd, V const& val ) { if (m_map.empty()) { if (!(val == m_valBegin)) { m_map.insert_or_assign(keyBegin, val); m_map.insert_or_assign(keyEnd, m_valBegin); } } else if ((--m_map.end())->first < keyBegin) { if (!(val == m_valBegin)) { m_map.insert_or_assign(keyBegin, val); m_map.insert_or_assign(keyEnd, m_valBegin); } } else if (!(m_map.begin()->first < keyBegin)) { if (val == m_valBegin) { V tempval = (--m_map.upper_bound(keyEnd))->second; if (m_map.lower_bound(keyBegin) != --(m_map.lower_bound(keyEnd))) { m_map.erase(m_map.upper_bound(keyBegin), m_map.lower_bound(keyEnd)); m_map.insert_or_assign(keyEnd, tempval); } } else { V tempval = (--m_map.upper_bound(keyEnd))->second; m_map.insert_or_assign(keyBegin, val); if(m_map.lower_bound(keyBegin) != --(m_map.lower_bound(keyEnd))){ m_map.erase(m_map.upper_bound(keyBegin), m_map.lower_bound(keyEnd)); if(!(tempval == val)){ m_map.insert_or_assign(keyEnd, tempval); } } else { m_map.insert_or_assign(keyEnd, m_valBegin); } } } else { V beginTempVal = (--m_map.upper_bound(keyBegin))->second; V tempval = (--m_map.upper_bound(keyEnd))->second; if (beginTempVal != val) { m_map.insert_or_assign(keyBegin, val); } if ((m_map.lower_bound(keyBegin) == (m_map.lower_bound(keyEnd))) && beginTempVal == val) {} else if((m_map.lower_bound(keyBegin) == (m_map.lower_bound(keyEnd))) && beginTempVal != val) { m_map.insert_or_assign(keyEnd, beginTempVal); } else { m_map.erase(m_map.upper_bound(keyBegin), m_map.lower_bound(keyEnd)); if(!(tempval == val)){ m_map.insert_or_assign(keyEnd, tempval); } } } }
Editor is loading...
Leave a Comment