如何通过复制和引用将向量传递给函数?

时间:2011-08-29 04:54:08

标签: c++ templates vector

    int main () {
       vector <int> vectorF;
       functionX <vector<int>&, long> (vectorF, 1L);
    }

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

如果在函数定义中修改了此代码,则会更改向量中的实际值。

通过复制传递矢量的方法是什么?

2 个答案:

答案 0 :(得分: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进行阅读。

答案 1 :(得分:1)

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

&之后添加vector<int>会使dataTypeA成为对向量的引用。如果要复制到矢量,请删除&amp;