[問題] begin和end

看板C_and_CPP (C/C++)作者 (薄荷)時間11年前 (2014/08/31 16:06), 編輯推噓0(0011)
留言11則, 6人參與, 最新討論串1/1
大家好~ 我想請問一個問題 int ia[10]={1,2,3,4,5,6,7,8,9,10}; int ib[3]={1,3,8}; begin(ia); 和vector <int> ia; ia.begin()的差異在於哪呢? 發現 built in type 僅可以使用 begin(ia) 但是STL的型態 則兩者都可以用 不曉得差異在於哪呢? 想GOOGLE,但連關鍵字都不會下>_< 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.0.23 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409472404.A.B98.html

08/31 16:22, , 1F
你的思意是 std::begin(ia) 和 std::end(ia) 吧?
08/31 16:22, 1F

08/31 16:29, , 2F
記憶中C++11 begin(foo)只會叫foo.begin(),end也一樣
08/31 16:29, 2F

08/31 16:40, , 3F
你的問題已經說明了大部分的答案. C-style array 無法用.
08/31 16:40, 3F

08/31 16:41, , 4F
為了讓寫泛型函式更簡單. 所以使用非成員函式
08/31 16:41, 4F

08/31 16:46, , 5F
c++11 std::begin()有為array[N]作overload不是只會begin
08/31 16:46, 5F

08/31 19:36, , 6F
std::begin 是最泛化的
08/31 19:36, 6F

09/01 14:52, , 7F
建議用 begin() end() 這樣對物件的操作一致,才不
09/01 14:52, 7F

09/01 14:52, , 8F
用在類似 generic programming 的情境下要為不同型態
09/01 14:52, 8F

09/01 14:52, , 9F
做特化,因為 ADL 的關係也可以允許你為自己寫的容
09/01 14:52, 9F

09/01 14:52, , 10F
器提供 begin() end()
09/01 14:52, 10F

09/01 14:59, , 11F
感謝大家的回覆 >_<
09/01 14:59, 11F
文章代碼(AID): #1K0jUKkO (C_and_CPP)
文章代碼(AID): #1K0jUKkO (C_and_CPP)