為什麼 C 11 之前,std vector resize 要傳遞值,而不是常引用?

時間 2021-06-07 22:23:54

1樓:

如果沒有優化,

傳值可能更快一些,值能進register。

而引用,相當於指標。

數學函式,比如abs,exp這些,都是傳值的。

2樓:

或許是考慮到可能用原來vector的某個元素來resize,比如vector.resize(1, vector[99])。這種情況下引用可能失效,需要在操作前先拷貝一次。

反正都要拷貝,不如直接在引數裡完成拷貝。

不要懷疑委員會,C++大佬們基本都在商業公司任職,思考得比我們多得多。

3樓:陳碩

原因我不知道。

GCC 的 STL 在 2005 年之前是用的兩個過載的 resize(),然後在 r100668 按照標準改成了乙個帶預設引數的 resize。

C 11為什麼引入nullptr?

徐辰 因為C 他爹早就看0這個magic number不爽了,當年沒顧上搞,一直拖到2011年了,再不瘋狂一把C 就沒人用了。 enpeng xu 問題的關鍵是c 不知道怎麼正確做void 到 T 的預設轉換,所以多此一舉的引入了nullptr。某些情況做下c 編譯器不知道怎麼把 void ptr正...

c 11中std unique ptr需要明確知道型別的析構函式,而shared ptr不需要?

土地測量員 詳細講一下std unique ptr的部分吧。std unique ptr需要明確知道型別的析構函式 unique ptr型別是 template class T,class Deleter std default delete class unique ptr private T p...

C 11 模板引數推導(Template Argument Deduction)是如何工作的?

electrlife 關於模版推導,借題主地盤,請教下如下情況如何理解?template class MyVector private T aa int main int argc,const char argv 這裡本意是請問 push back 的const 在推導過程是不是會重複const c...