[問題] begin和end

作者: parkko (薄荷)   2014-08-31 16:06:41
大家好~
我想請問一個問題
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,但連關鍵字都不會下>_<
謝謝大家
作者: kerwinhui (kezza)   2014-08-31 16:22:00
你的思意是 std::begin(ia) 和 std::end(ia) 吧?記憶中C++11 begin(foo)只會叫foo.begin(),end也一樣
作者: Feis (永遠睡不著 @@)   2014-08-31 16:40:00
你的問題已經說明了大部分的答案. C-style array 無法用.為了讓寫泛型函式更簡單. 所以使用非成員函式
作者: jackace (inevitable......)   2014-08-31 16:46:00
c++11 std::begin()有為array[N]作overload不是只會begin
作者: firose (guest也是也是也是也是也)   2014-08-31 19:36:00
std::begin 是最泛化的
作者: loveme00835 (髮箍)   2014-09-01 14:52:00
建議用 begin() end() 這樣對物件的操作一致,才不用在類似 generic programming 的情境下要為不同型態做特化,因為 ADL 的關係也可以允許你為自己寫的容器提供 begin() end()
作者: parkko (薄荷)   2014-09-01 14:59:00
感謝大家的回覆 >_<

Links booklink

Contact Us: admin [ a t ] ucptt.com