2012-03-15 159 views
2

C++是否有預先構建的方法來確定您在foreach循環中的哪個元素,或者是否有方法來確定您是否在最後一個元素上?或者我必須用計數器手動執行此操作嗎?ForEach中的最後一個元素

+0

如果您需要知道每個元素(或任何元素)的索引,則應該使用for循環。 – 2012-03-15 23:02:56

+0

爲什麼你需要知道這一點? – svick 2012-03-15 23:24:05

回答

7

不,沒有這種內置的方式。一般來說,也不可能存在迭代器,因爲迭代器不需要知道它們最終「幾乎」。

+0

啊,我明白了。謝謝:) – Jon 2012-03-15 23:02:47

+0

對於大多數迭代器來說很簡單:'if(it + 1 == end)' – 2012-03-19 15:57:03

4

如果你發現自己需要的索引你可能會更好過使用普通的for循環

+0

補充它。我只是懶得重寫我的循環!謝謝:) – Jon 2012-03-15 23:02:28

3

如果你需要的最後一個元素,如何使用另一個迭代器來存儲它你去到下一個項目中的容器之前?如果在獲取下一個元素(遞增或遞減迭代器)之前將兩者都設置爲開始和結束時循環,則將上一個迭代器設置爲當前,然後獲取下一個。

事情是這樣的:

container current::iterator; 
container last::iterator; 
current = container.first(); 
last = current; // or contianer.first(); 
while (current is valid) 
{ 
    // do something 
    last = current; 
    // get the next item 
    current = container.next(); // or current++; 
           // depending upon container or 
           // iterator 
} 

這樣,你就不必改寫你的循環,但是你需要檢查,以確保您的容器是不是在此之前空。

+1

只是縮進代碼四個空格(有一個按鈕,它尋找'{}') – 2012-03-15 23:24:22

+0

謝謝。我的編輯有點生鏽。 – Glenn 2012-03-15 23:51:28

相關問題