2015-12-08 83 views
0

我得到了下面的代碼一個奇怪的編譯錯誤沒有匹配功能異常如果我先構造矢量,然後將其傳遞給函數,那麼它工作得很好。就像我在做塊下if當通過向量作爲參數(C++)

vector<int> newVec(nums.begin(), nums.begin() + mid); 
return function(newVec); 

但如果我結合這兩個步驟,出現錯誤。任何人都可以爲我解釋嗎?非常感謝〜

=========================================== ==============================

編輯:

編譯錯誤是

no matching function for call to ‘Solution::function(std::vector<int>)’

+0

請發佈「怪異的編譯器錯誤」消息。 – PaulMcKenzie

+0

只是一個簡單的問題。這可能是因爲凌晨4點,但我在這裏看到了無限遞歸。這是奇怪的編譯器錯誤堆棧溢出? – mrDudePerson

+0

Duplicate of:http://stackoverflow.com/questions/1565600/how-come-a-non-const-reference-cannot-bind-to-a-temporary-object – PaulMcKenzie

回答

0

vector<int>& nums左值參考。你必須通過一個左值。爲了讓這兩種用途,更改爲vector<int> const &nums,你應該做的反正。
考慮重新設計function接受擺在首位的迭代範圍。然後你可以運行你的整個算法,只是看一個單一的緩衝區,而不是堆成一堆的副本。
–   M.M