Re: [问题] std::array class 跟普通的array哪个好?

楼主: wtchen (没有存在感的人)   2015-05-08 16:08:44
最近多唸了点东西,回来补充心得:
某MOOC建议用std::array(C++11新增)取代传统C array的原因有:
(该MOOC是法文,如果我解读有错请小力鞭)
- 传统C array只能以reference的方式跟函式传递值(不管有无加&)
(就是板上所谓的"退化"?)会造成阅读困难
- 传统C array没办法直接知道array大小
- 传统C array没法用 = (ex: tab1 = tab2)
- 传统C array无法当作结果被函式传回
- 传统C array有跟别种type不同的宣告方式(不能用({1, 2, 3}))
该MOOC结论:传统C array没有好处,能用vector就用vector,
如果array size不会变就用std::array
※ 引述《wtchen (没有存在感的人)》之铭言:
: 问题(Question):
: 在coursera看到有人用std::array去宣告array
: http://www.cplusplus.com/reference/array/array/
: 可是array不是用一般方式宣告就好了吗?
: 例如说 int foo [5] = { 16, 2, 77, 40, 12071 };
: 多include 一个array标头再宣告成
: std::array<int,5> foo = { 16, 2, 77, 40, 12071 };
: 不是比较麻烦吗?
: 我想问的是用std:array宣告array有啥特别的优点呢?
: 谢谢。
作者: Feis (永远睡不着 @@)   2015-05-08 16:20:00
好处: C 传统 array 打的字比较少
作者: Ebergies (火神)   2015-05-08 18:30:00
推楼上
作者: johnjohnlin (嗯?)   2015-05-09 09:20:00
产生vec2之类的型别的时候稍微有点用
作者: s25g5d4 (function(){})()   2015-05-09 19:01:00
还有可以用 iterator, 在设计 template 的时候比较有用
作者: azureblaze (AzureBlaze)   2015-05-09 19:14:00
http://ideone.com/O0BK2N iterator传统array也可用喔
作者: s25g5d4 (function(){})()   2015-05-09 19:17:00
我知道啊 不过那不是 member function
作者: Feis (永远睡不着 @@)   2015-05-09 20:51:00
就泛型而言 Member function 有比较好?
作者: s25g5d4 (function(){})()   2015-05-09 20:59:00
我的想法很简单 就只是写 xxx.begin() 抓的到东西而已至于泛型是不是有 OO 比较好我不知道当然如果 iterator 不是这样取就没差
作者: Feis (永远睡不着 @@)   2015-05-09 21:09:00
这样的话,我觉得连 begin 都不用更好
作者: Killercat (杀人猫™)   2015-05-10 23:03:00
array老实讲,目前除了在函数签名里面限定传入型别(array<3>跟array<5>会被当不同型别)外,实务上的功能实在是满有限的...

Links booklink

Contact Us: admin [ a t ] ucptt.com