[问题] 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