2011-08-29 66 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

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

相关问题