[問題] 在STL容器中增加元素的方法

看板C_and_CPP (C/C++)作者時間16年前 (2009/09/09 14:20), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/3 (看更多)
有個STL容器 std::list<T> my_list; 要在容器最後面新增一個元素的時侯,下面兩種方法哪一種比較有效率呢.. 1. T temp; // 對temp的內容操作.. my_list.push_back(temp); 2. my_list.resize(my_list.size() + 1); T& temp = my_list.back(); // 對temp的內容操作.. 之前一直習慣的寫法都是1. 但是2.的作法好像少呼叫一次copy constructor 有人對這兩種作法的效率問題作過實際的測試嗎 @ @? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.15.163

09/09 14:46, , 1F
2感覺很不直觀, 基於日後好維護寫1吧
09/09 14:46, 1F

09/09 14:52, , 2F
但是如果T的容量很大,效率問題就會浮現吧?
09/09 14:52, 2F

09/09 14:52, , 3F
除非把容器設計成list<shared_ptr<T> >..@@
09/09 14:52, 3F

09/09 15:50, , 4F
2並沒有比較好吧....
09/09 15:50, 4F

09/09 16:13, , 5F
不要過早最佳化...真的效能不夠profile後再說吧
09/09 16:13, 5F

09/10 03:02, , 6F
不要浪費時間,正常的插入方式要是慢的話早就被罵翻了。
09/10 03:02, 6F
文章代碼(AID): #1AfqaPtM (C_and_CPP)
文章代碼(AID): #1AfqaPtM (C_and_CPP)