[問題] 是否使用vector?

看板C_and_CPP (C/C++)作者 (Clonsey)時間6年前 (2019/01/30 21:43), 6年前編輯推噓4(408)
留言12則, 8人參與, 6年前最新討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) g++ 問題(Question): 最近剛接觸vector, 很方便, 省了很多初始化的工作 程式碼也變得簡潔多, 也較好維護 但是同時也降低的程式的效能(很明顯) 請問若沒有要做太多複雜的增刪,是否繼續使用array或pointer就好? 程式碼裡同時有vector和pointer/array混雜這樣的coding style會不會不好? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.142.64.53 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1548855788.A.21F.html ※ 編輯: clonsey1314 (220.142.64.53), 01/30/2019 21:44:36

01/30 21:51, 6年前 , 1F
我覺得應該要找出你效能降低的原因
01/30 21:51, 1F

01/30 21:52, 6年前 , 2F
譬如是不是用傳值導致太多不必要的複製?
01/30 21:52, 2F
對, 程式的確有幾個function是有傳vector, 且這些function不斷地被呼叫 那是不是應該盡量避免將vector型態的變數作為function的參數? ※ 編輯: clonsey1314 (220.142.64.53), 01/30/2019 22:05:44 ※ 編輯: clonsey1314 (220.142.64.53), 01/30/2019 22:09:35

01/30 23:20, 6年前 , 3F
應該要用傳reference或傳pointer而不是傳value
01/30 23:20, 3F

01/30 23:24, 6年前 , 4F
1. 用參考. 2. 看能不能改用 array<T>
01/30 23:24, 4F

01/31 01:00, 6年前 , 5F
通常vector不會是效能瓶頸 你確認過了嗎
01/31 01:00, 5F

01/31 01:46, 6年前 , 6F
Vector 效能不會比array差
01/31 01:46, 6F

01/31 11:23, 6年前 , 7F
傳參考,不然拉成全域,自己維護狀態
01/31 11:23, 7F
謝謝各位,已改傳reference,效能也已獲得改善:) ※ 編輯: clonsey1314 (218.164.36.184), 01/31/2019 11:50:31

02/01 06:27, 6年前 , 8F
-O2之後vector跟原生array應該要幾乎一樣快才對
02/01 06:27, 8F

02/01 10:16, 6年前 , 9F
主要是複製成本, vector 被 PBV 的話會需要複製
02/01 10:16, 9F

02/01 10:17, 6年前 , 10F
所以大家才會建議傳參考 (PBR) 減少複製成本
02/01 10:17, 10F

02/05 19:37, 6年前 , 11F
降低效能應該是你的問題,source code放出來看看
02/05 19:37, 11F

02/05 19:39, 6年前 , 12F
std::move和emplace_back是你的好朋友
02/05 19:39, 12F
文章代碼(AID): #1SKQdi8V (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1SKQdi8V (C_and_CPP)