我儘量避免指針,而不是做性病避免指針::名單
std::list<std::pair<int,int>* > myList;
void addElement(int a, int b) {
myList.push_back(new std::pair<int,int>(a,b));
}
我想我可以做這樣
std::list<std::pair<int,int> > myList;
void addElement(int a, int b) {
std::pair<int,int> p(a,b);
myList.push_back(p);
}
東西如果我理解正確的行爲,這應該存儲該副本的副本,並在執行myList.clear()
(而不是指針)時自動將其刪除。
這是最好的方法嗎? 我可以期待編譯器優化不必要的對象p
?
它是否重要,如果它是優化或不(成本將是微不足道的)。 –
您正在將一個項目添加到列表中,這將導致堆分配,並且會在列表的每次迭代中導致大量的緩存未命中 - 並且您擔心複製兩個整數? –
我很擔心在我的代碼中處理指針,並導致內存泄漏。我要求獲得一些更有經驗的實施意見,以確保我沒有做任何特別愚蠢的事情。我感謝所有的評論和回覆。 –