std::map 获取 lower_bound 的上一个

std::map get previous of 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

std::map iterators are bidirectional iterators,这意味着您可以对它们使用 -- 运算符。

auto lower_bound = m_map.lower_bound(7); // points to  (10, 'c')
--lower_bound;  // Should now point to (5, 'b')