gpt4 book ai didi

c++ - 变量中的 reverse_iterator 和迭代器抽象

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:52 25 4
gpt4 key购买 nike

我有一个方法应该迭代 map向前或向后,取决于条件。操作本身与方向无关,因此我希望能够做这样的事情:

std::map<int, int> some_map;
auto iter = some_condition ? some_map.begin() : some_map.rbegin();
for (; iter != some_condition ? some_map.end() : some_map.rend(); ++iter)
{
//something to do with *iter
}

我知道我应该可以使用模板函数来做到这一点(对吗?),但这似乎有点矫枉过正。

有没有一种方法可以在没有模板的情况下在一个函数中完成?也许使用 <algorithm>

最佳答案

这样做的一种方法是首先考虑您要对每个元素执行的操作,例如

auto f = [](const std::pair<int, int> &p) { std::cout << p.first << std::endl; };

然后你可以在方向上分支:

if(forward)
std::for_each(std::begin(m), std::end(m), f);
else
std::for_each(std::rbegin(m), std::rend(m), f);

关于c++ - 变量中的 reverse_iterator 和迭代器抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com