【问题标题】:How to get the second last element of a set in C++?如何在 C++ 中获取集合的倒数第二个元素?
【发布时间】:2020-11-12 08:33:09
【问题描述】:

前; 我们写for(int i=0;i<(somethin_length)-1;i++) 如何使用 set 来做到这一点?

【问题讨论】:

  • 但是你想对除了最后一个元素之外的所有元素做一些事情,还是你想对倒数第二个元素做一些事情?在第二种情况下......反向迭代器(rbegin())呢?

标签: c++ c++11 stl set


【解决方案1】:

如果你有一个集合,只需将结束迭代器递减两次。

// Check that we have at least two elements first; if we don't have at least
// two then proceeding would cause undefined behavior.
if (some_set.size() >= 2) {
    auto it = some_set.end();
    --it;
    --it;

    // *it now refers to the second-to-last value
}

【讨论】:

  • 或:auto it = std::prev(some_set.end(), 2);
  • 或者:auto it = std::next(some_set.end(), -2);
  • 或者auto it = some_set.rbegin(); ++it;
  • @JeJo 嗯,我假设他们只是想提取倒数第​​二个值。如果他们想迭代到倒数第二个值,那就另当别论了。
  • @JeJo 我应该承认我的建议是基于答案,而不是基于问题。这个问题本身不是很清楚。如果it 用作上限,我想你是对的。顺便说一句,您可以在 std::prev 中省略 1
猜你喜欢
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 2017-02-11
  • 2017-03-11
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多