Untitled
unknown
plain_text
2 years ago
2.6 kB
15
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