Re: [問題] C++中iterator的疑問

看板C_and_CPP (C/C++)作者 (真實之眼)時間15年前 (2011/03/13 17:09), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/3 (看更多)
首先感謝各位先進的回覆! 目前的認知是, string * 跟 iterator 雖然概念上相同, 但是實際上在實做上是不同的 , 也就導致這兩個型態無法相容使用. 但是我在書上有看到一個範例: vector<string> svec; string sarray[4] = {"A","B","C","D"}; svec.insert(svec.end(), sarray, sarray+4); 為何這樣子的例子就可以成功執行, 因為sarray 不也是個 string * 嗎? 卻可以套用到型態為 iterator 的參數上? 先謝謝各位了 :) , 問題如果問的太淺, 敬請包涵 :) ※ 引述《nightcola (真實之眼)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 請問一下為何下述用法會造成錯誤 : vector<string> svec(10,"B"); : vector<string>::iterator it = &svec[0]; : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : error C2440: '正在初始化' : 無法由 'std::basic_string<_Elem,_Traits,_Ax> *' 轉 : 換為 'std::_Vector_iterator<_Ty,_Alloc>' : 程式碼(Code):(請善用置底文網頁, 記得排版) : 補充說明(Supplement): : 在我的認知裡面, pointer也是一種iterator, 那為何可以使用: : string *test = &svec[0]; : 但是卻不可以使用 : vector<string>::iterator it = &svec[0]; : 請各位先進解惑 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.254.64

03/13 17:15, , 1F
A -> B 不代表 B -> A
03/13 17:15, 1F

03/13 17:20, , 2F
iterator 是一種概念, B 屬於 A, C 屬於 A, 但
03/13 17:20, 2F

03/13 17:20, , 3F
C 等於 B 並不一定成立
03/13 17:20, 3F
文章代碼(AID): #1DV8dcD9 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1DV8dcD9 (C_and_CPP)