[問題] vector複製時間消耗
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
平台可能是 mingw32 或 (32||64) 位元的 Ubuntu
G++ >= 4.6.2, with -std=c++0x (-std=c++11) flags on
問題(Question):
想請問一下, 我的程式中有如下片段
vector<my_type> result;
if (condition)
result = function1();
else
result = function2();
而 function1, function2 的 prototype 皆為
vector<my_type> functionX();
那麼我需要擔心那兩行賦值所花的時間嗎?
還是其實並不會有複製的動作?
另外請問有沒有推薦關於 C++ 這方面規定/G++現有的實做方面的資料呢?
之前想測試這類 return (by value, by ref) 以及宣告新變數時會呼叫 operator=,
copy constructor, 或是普通的建構子, 可是結果跟我胡亂猜測的差很多..
另外, 假如我在函式的參數中用 call by value, 那標準函式庫中的容器(特別是vector)
有可能自己優化掉改用 R-value reference (若我剛好傳給他的是 R-value)嗎?
麻煩各位大大解惑了, 謝謝! <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.52.23
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 16:53)
→
02/15 17:12, , 1F
02/15 17:12, 1F
指說改成 void functionX(vector<mpz_class>&) 嗎?
因為這樣看不出來會更改, 不太想寫成這樣的形式
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 18:13)
→
02/15 18:53, , 2F
02/15 18:53, 2F
推
02/15 18:59, , 3F
02/15 18:59, 3F
瞭解... 謝謝兩位
→
02/15 19:03, , 4F
02/15 19:03, 4F
感覺上使用這樣的函式時, code中比較看不出變數究竟會不會被修改,
除非去查看函數的文件(??)或是 prototype?
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 19:22)
→
02/15 19:12, , 5F
02/15 19:12, 5F
我去查查這兩個東西XD 謝謝!
→
02/15 20:48, , 6F
02/15 20:48, 6F
→
02/15 20:49, , 7F
02/15 20:49, 7F
嗯 謝謝 bachelorwhc 大的意見
無論有沒有用 const 修飾, 在呼叫該函式的那段 code 中總看不出來.
命名聽起來很合理XD
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 22:04)
→
02/15 22:20, , 8F
02/15 22:20, 8F
→
02/16 14:07, , 9F
02/16 14:07, 9F
→
02/16 14:08, , 10F
02/16 14:08, 10F
→
02/16 14:08, , 11F
02/16 14:08, 11F
謝謝各位提供解法!!
※ 編輯: suhorng 來自: 118.166.52.23 (02/16 17:02)
推
02/18 14:33, , 12F
02/18 14:33, 12F
討論串 (同標題文章)