簡體   English   中英

變量中的 reverse_iterator 和迭代器抽象

[英]reverse_iterator and iterator abstraction in a variable

我有一個方法應該根據條件向前或向后迭代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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM