C 傳參方式對執行速度的影響

2021-10-08 08:29:24 字數 955 閱讀 4392

在牛客上做了一道題,裡面包含了排序,思路是正確的,但是卻超時。苦思不得其解,跟別人的答案乙個個比較,讓我發現是傳參方式的不同,導致執行效率差了一些。

題目是「牛牛的魔法卡」,題目是什麼不重要,重要的是裡面需要用到sort()。而且要自己定義比較函式,於是我就直接定義了:

bool

mystrcmp

(vector<

int> a, vector<

int> b)

呼叫也很簡單

sort

(card.

begin()

, card.

end(

), mystrcmp)

;

這個程式執行沒有問題,但是通過率70%,提示執行時間過長。檢查迴圈沒有錯誤,那麼就是效率問題了。

正確答案的排序函式如下:在規定時間通過了所以測試。

sort

(card.

begin()

, card.

end(),

(vector<

int>

&a, vector<

int>

&b))

;

我們對比一下哈,正確函式把比較函式直接寫在了sort()裡面,嗯,簡潔一下。但是這不是重點,因為我寫進去,也沒有提公升速度。

關鍵在於,這個比較函式的傳參型別是引用!!!vector&a引用a就是傳入a本身,但是我最上面寫的那個mystrcmp,是傳值,vector a,傳值的話,就是對a的乙個拷貝,並不是a本身。

所以,我想呀,因為我原來是傳值,需要拷貝這個操作,這就會消耗記憶體和時間,所以導致效率下降。

當然嘍,傳入方式的區別不僅僅會影響效率,還會影響到其他的,比如是不是要改變傳入的引數,這裡附乙個講c++傳參方式的部落格c++傳值、傳引用

Python中擴充套件C語言加快執行速度的實現方法

當我們提到一門程式語言的效率時,通常包含了開發效率和執行效率這兩層意思。python作為一門高階語言,它功能強大,易於掌握,能夠快速的開發軟體,life is short,we use python!想必這些優點是毋庸置疑的,但是作為一門解釋性語言,執行速度的侷限性導致在處理某些高頻任務時存在不足。...

C 函式的四種傳參方式

1 call by value 2 call by constant reference 3 call by lvalue reference call by reference 4 call by rvalue reference c 11 1 call by value 小物件 複製代價小 不應...

C 許可權繼承方式對許可權的影響

三種訪問許可權 public 可以被任意實體訪問 protected 只允許子類及本類的成員函式訪問 private 只允許本類的成員函式訪問 注 當不寫訪問許可權時預設class為private,struct為public 三種繼承方式 public 繼承 protect 繼承 private 繼...