我有一个std::map
:
std::map<unsigned int, char> m_map
{
std::make_pair (0, 'a'),
std::make_pair (5, 'b'),
std::make_pair (10, 'c'),
std::make_pair (15, 'd'),
};
我正在使用std::map::lower_bound
来获取下限的迭代器。
auto lower_bound = m_map.lower_bound(7); // points to (10, 'c')
我想将前一个元素转到lower_bound
。目前,我正在遍历整个std::map
并存储前一个元素。如果达到下限,那么我就打破了循环。
我想知道,是否有一种更智能的方法可以将指针指向前一个元素lower_bound
。
答案 0 :(得分:2)
std::map
迭代器为bidirectional iterators,这意味着您可以在其上使用--
运算符。
在
中auto lower_bound = m_map.lower_bound(7); // points to (10, 'c')
--lower_bound; // Should now point to (5, 'b')