2016-03-04 80 views
3

我想要做的是調用一個包含std::vector參數的函數,方法是直接在調用中放入一個數組。我不想製作一個矢量,然後將它傳遞給函數,但是我想把大括號放在函數中。這裏是一般的想法:如何將r值std :: vector傳遞給函數?

void doSomething(std::vector<int> arr) 
{ 
    std::cout << arr[0] << std::endl; 
} 

int main() 
{ 
    doSomething({ 1, 2, 3 }); 
} 

這給了我一個錯誤。我也嘗試使用lambda表達式,我不太熟悉,但這裏是:

doSomething([]()->std::vector<int>{ return{ 1, 2, 3 }; }); 

這是行不通的。這裏是我不想要的:

std::vector<int> a {1, 2, 3}; 
doSomething(a); 

那麼我該如何處理這個問題呢?我真的希望我寫的不是完全愚蠢的。

+2

第一個代碼塊,我用gcc和鏗鏘編譯。 –

+2

您的*一般想法*實際編譯。你試過了嗎? – skypjack

+0

最初,當我嘗試它不起作用,但現在它確實。我一定事先做了錯事。現在它可以工作。謝謝。 –

回答

6

可以使用從初始化列表初始化一個臨時的向量:

doSomething(std::vector<int>{1, 2, 3 }); 

Live Demo

+0

非常感謝,我不敢相信這件事並沒有超出我的想象。 –

相關問題