std :: map获取lower_bound的前一个

时间:2018-04-05 11:44:33

标签: c++11 stdmap lower-bound

我有一个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

1 个答案:

答案 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')