[問題]請教向量裡使用iterator的...解釋,感謝您

看板C_and_CPP (C/C++)作者 (蝴蝶效應)時間16年前 (2009/02/11 11:21), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
版上各位先進您們好..小弟我最進重新碰c++(使用DevC++) 當時沒學的很好...有些觀念現在想請教一下各位 請問一下在for的迴圈裡一般而言會像下面這樣 for(int i=0;i<=5;i++)這邊可以理解的是這迴圈是 以i初始為0,i=i+1一直跑到超過5就跳出迴圈 但在向量中小弟我看到一個式子無法理解 for(vector<int>::iterator it = ivector.begin(); it != ivector.end();it++) 第一項是指將it 指向ivector這個向量的起始位址嗎? 第二項為什麼是用!=,這邊最讓小弟我無法理解? 另外還看到一個使用find的例子 輸入一個值為search想在ivector這個向量中看能不能找到相同值 vector<int>::iterator it = find(ivector.begin(), ivector.end(), search); if(it != ivector.end()) { cout << "找到搜尋值!" << endl; } else { cout << "找不到搜尋值!" << endl; } 小弟我想請教一下這邊的if裡的條件為什麼還是當!=時是符合找到的條件呢 小弟我第一次在版上發文,不曉得有沒有什麼不妥,也請各位前輩多多指教 另外小弟我是在良葛格學習筆記這個站上自習C++ 小弟我記得這位大大好像也會上本版的樣子..在這邊一併致謝 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.166.81

02/11 11:28, , 1F
因為 end() 所代表的位址是真正最後一筆資料的下一筆,所
02/11 11:28, 1F

02/11 11:29, , 2F
以當 iterator == end() 時,vector 裡的資料才有被完全
02/11 11:29, 2F

02/11 11:29, , 3F
走訪完畢。
02/11 11:29, 3F

02/11 13:08, , 4F
第二個問題可見:http://0rz.tw/T3Dnu
02/11 13:08, 4F

02/11 13:09, , 5F
return value 的第二行是這麼說的:
02/11 13:09, 5F

02/11 13:09, , 6F
If no element matches, the function returns last.
02/11 13:09, 6F

02/11 17:09, , 7F
謝謝兩位大大的熱心解說..我似乎有點了解它的含義了..
02/11 17:09, 7F

02/11 18:07, , 8F
當時會覺奇怪是通常回圈的條件都是設一個範圍而不是一點
02/11 18:07, 8F

02/11 18:07, , 9F
不過現在我大概知道要怎麼去想像了..感謝
02/11 18:07, 9F
文章代碼(AID): #19aaHH6h (C_and_CPP)
文章代碼(AID): #19aaHH6h (C_and_CPP)