簡體   English   中英

在舊的c ++中實現基於范圍的

[英]Achieve range-based for in older c++

我習慣於支持foreach循環的其他語言或c ++ 11中基於范圍的語言。 我試圖在c ++ 98中模擬它。主要是因為我不喜歡每次需要對象時都使用(*it)表示法。

說我有這個c ++ 11代碼:

std::vector<int> myVec{...};
for(auto& outerLoopVar : myVec)
{
    for(auto& innerLoopVar : myVec)
    {
        // do logic
    }
}

是否有更好的方法在c ++ 98中復制它而不是做這樣的事情?

std::vector<int> myVec;
// populate vector
for(std::vector<int>::iterator it1 = myVec.begin(); it1 < myVec.end(); it1++)
{
    int& outerLoopVar = *it1;
    for(std::vector<int>::iterator it2 = myVec.begin(); it2 < myVec.end(); it2++)
    {
        int& innerLoopVar = *it2;
        // do logic
    }
}

你想使用boost foreach

#include <boost/foreach.hpp>

BOOST_FOREACH(int& elem, myVec) {
    // do logic
}

不是真的,我的意思是迭代器符號是非常標准的,適用於多個容器和對象。 它是一個應該使用的有價值的工具。 我真的不知道為什么你不喜歡使用符號,但我認為如果你接受它會更好。

暫無
暫無

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

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