2014-04-05 85 views
-1

需要檢查位置是奇數還是偶數。獲取迭代器的位置? C++

for(auto a : aliens) { 
    if(a - vec.begin() % 2 == 0){ 

    /*do something */ 
    } 

猜測這將是類似的東西,從我所研究,但似乎無法得到它運行,這是相當惱人的。 謝謝..

+0

什麼是'aliens'?一個std :: vector? – streppel

+0

當你需要這種內部條件時,不要使用遠程循環。 – Chnossos

+0

if((a - vec.begin())%2 == 0){ – ravenspoint

回答

0

其實你不能在這種類型的循環。這是foreachforeach不會讓您訪問迭代器,而是訪問迭代對象本身。當你需要訪問迭代器時,你必須使用for循環。

+0

你怎麼可能知道'外星人'不是充滿迭代器的容器? – juanchopanza

+0

@juanchopanza好吧,你是對的,我認爲'vec.begin()'是'aliens.begin()'。 –

+0

應該已經更清楚了,它的對象全是 – user3463583

3

更簡單的方法:

bool isEven = true; 
for(auto a : aliens) { 
    isEven = !isEven; 
    if(isEven){ 

    /*do something */ 
    } 
+0

@r Shau謝謝,這種方法工作。 – user3463583