[英]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.