Re: [問題] std::array class 跟普通的array哪個好?

看板C_and_CPP作者 (沒有存在感的人)時間9年前 (2015/05/08 16:08), 9年前編輯推噓7(707)
留言14則, 6人參與, 最新討論串2/2 (看更多)
最近多唸了點東西,回來補充心得: 某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有啥特別的優點呢? : 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.64.229 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431072527.A.12B.html

05/08 16:20, , 1F
好處: C 傳統 array 打的字比較少
05/08 16:20, 1F

05/08 18:30, , 2F
推樓上
05/08 18:30, 2F
※ 編輯: wtchen (90.41.64.229), 05/08/2015 19:50:24

05/09 09:20, , 3F
產生vec2之類的型別的時候稍微有點用
05/09 09:20, 3F

05/09 19:01, , 4F
還有可以用 iterator, 在設計 template 的時候比較有用
05/09 19:01, 4F

05/09 19:14, , 5F
http://ideone.com/O0BK2N iterator傳統array也可用喔
05/09 19:14, 5F

05/09 19:17, , 6F
我知道啊 不過那不是 member function
05/09 19:17, 6F

05/09 20:51, , 7F
就泛型而言 Member function 有比較好?
05/09 20:51, 7F

05/09 20:59, , 8F
我的想法很簡單 就只是寫 xxx.begin() 抓的到東西而已
05/09 20:59, 8F

05/09 20:59, , 9F
至於泛型是不是有 OO 比較好我不知道
05/09 20:59, 9F

05/09 21:00, , 10F
當然如果 iterator 不是這樣取就沒差
05/09 21:00, 10F

05/09 21:09, , 11F
這樣的話,我覺得連 begin 都不用更好
05/09 21:09, 11F

05/10 23:03, , 12F
array老實講,目前除了在函數簽名裡面限定傳入型別
05/10 23:03, 12F

05/10 23:04, , 13F
(array<3>跟array<5>會被當不同型別)外,實務上的功能
05/10 23:04, 13F

05/10 23:04, , 14F
實在是滿有限的...
05/10 23:04, 14F
文章代碼(AID): #1LJ6yF4h (C_and_CPP)
文章代碼(AID): #1LJ6yF4h (C_and_CPP)