線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:830
推到 Plurk!
推到 Facebook!

請問一個vector itreator的問題

尚未結案
gooddess
一般會員


發表:7
回覆:2
積分:1
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-26 03:57:17 IP:140.126.xxx.xxx 未訂閱
經由各位版上的前輩提點可以讀檔了 但是現在是我要經由iterator來判斷我要從buffer裡面來讀取那一筆以及其後的資料 我宣告一個iterator如下 vector::iterator pd; vector buffer; 程式如下
    for (pd=buffer.begin();pd!=buffer.end();pd  ) \\從頭到尾的找 
     {
      if (*pd == target)     \\找到跟target值相符的
       {
        for (i=pd;i
但是在
for (i=pd;i這邊有錯
想請問我該如何去抓index呢??
--
對不起..不知道為什麼  會出不來     
        
achillean
一般會員


發表:16
回覆:23
積分:7
註冊:2004-08-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-26 04:26:12 IP:218.175.xxx.xxx 未訂閱
對不起,我不太確定,但是您可以試試看
for (i=pd;i        發表人 - achillean 於 2004/08/26  04:27:23    發表人 - achillean 於 2004/08/26  04:27:47
        
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-26 06:45:53 IP:221.169.xxx.xxx 未訂閱
pd 的型態是 iterator buffer.size() 傳回的型態通常是 unsigned int 兩個型態不同
    for (i=pd;i < buffer.size(); i++) 指令當然會出問題
請改成
for (i=pd;i != buffer.end() ; i++)    
發表人 - justdo 於 2004/08/26 06:54:09
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-26 11:45:05 IP:211.76.xxx.xxx 未訂閱
gooddess你好:     如果你需要index的話,最方便的做法是不用iterator,而用index來找值 。  
    for (unsigned int Index = 0;
                Index < buffer.size() ;  Index) 
     {
      if (buffer[Index] == target)
       {
        for (unsigned int i=Index;i        另外當然iterator也可以做到,程式碼如下:     
 
    for (pd=buffer.begin();pd!=buffer.end();pd  ) \\從頭到尾的找 
     {
      if (*pd == target)     \\找到跟target值相符的
       {
        for (unsigned int i=pd-buffer.begin();
               i         不過上面的碼雖然可以運作,但是在運用iterator時,有兩個地方有執行上的浪費。
     第一個是buffer.end()會被重複呼叫,每呼叫一次,就有一個string的暫時物件被產生。比較好的做法是在迴圈外宣告一個bufferend變數,先把buffer.end()的結果存起來。第二個是pd在遞增時,用  pd比pd  更有效率,可以減少一個暫時物件的產生。兩個地方加起來,第一個迴圈每loop一次,就有兩個string的暫時物件的執行浪費,如果在處理大資料時,會做成不少時間的延長。      修改後的程式碼如下:     
 
  vector::iterator bufferend = buffer.end();
    for (pd=buffer.begin();pd != bufferen;   pd)
     {
      if (*pd == target)
       {
        for (unsigned int i=pd-buffer.begin();
               i     
        
系統時間:2024-07-06 0:52:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!