2011-08-29 75 views
0
int main() { 
     vector <int> vectorF; 
     functionX <vector<int>&, long> (vectorF, 1L); 
    } 

    template <typename dataTypeA, 
       typename dataTypeB> dataTypeB functionX (dataTypeA argA, 
                 dataTypeB argB) 
    { 
    } 

如果在函數定義中修改了該代碼,該代碼將更改向量中的實際值。如何通過複製和引用將函數傳遞給函數?

通過複製傳遞向量的方式是什麼?

回答

1

functionX <vector<int>, long> (vectorF, 1L);

Addind的vector<int>&將使dataTypeA是一個向量的參考。如果你想複製到一個向量,去掉&

+0

這對我來說太愚蠢了,不去想那麼簡單的事情。這個問題值得贊成。 :rolleyes:並感謝您的及時迴應。 –

+0

如果回答你的問題,你能接受答案嗎?謝謝:) – Drahakar

+0

是的,我不需要這些提醒,我等了6分鐘才通過,因爲在此之前無法接受答案。 :) –

4

只需調用功能,

functionX (vectorF, 1L); // ok! explicit function calling isn't needed 

然而,作爲一個邊不,我想提一提,使整個vector的副本只爲一個功能沒有多大意義。你可以簡單地改變函數定義,

template <typename dataTypeA, typename dataTypeB> 
dataTypeB functionX (const dataTypeA& argA, dataTypeB argB) 
{     ^^^^^^^^^^^^^^^^^ const reference 
} 

如果您使用此vector閱讀的目的。

+0

是的,我意識到,唉,太遲了。 –

+0

@Anisha,確保你真的**需要製作'vector'的副本。因爲,我很少看到這樣的用法。在答案中解釋了這一點。 – iammilind

+1

我知道這沒有道理,但我只是想知道如何去做。 :) –

相關問題