将不同类型的向量传递给模板函数

Posted

技术标签:

【中文标题】将不同类型的向量传递给模板函数【英文标题】:Passing vectors of different types to a template function 【发布时间】:2013-02-10 01:40:43 【问题描述】:

我收到一个编译器错误提示

could not deduce template argument for 'std::vector<T*>&' from 'std::vector<_Ty>'

template <typename T> void foo(vector<T*>& a, int left, int right)

     ...


main()

     ...
     //declare and instantiate 3 vectors
     vector<int> intVector;

     foo(intVector, 0, 100);
     foo(doubleVector, 0, 100);
     foo(charVector, 0, 100);
     ...

【问题讨论】:

vector&lt;T*&gt;&amp; 表示你想要一个指针向量,而你给它一个非指针向量。 你为什么要做vector&lt;T*&gt; 而不仅仅是vector&lt;T&gt; 【参考方案1】:

int 无法匹配 T*

要么将vector 设为vector&lt;int*&gt;,要么将模板设为vector&lt;T&gt;

【讨论】:

以上是关于将不同类型的向量传递给模板函数的主要内容,如果未能解决你的问题,请参考以下文章

将模板参数传递给调用成员函数的函数

将模板传递给函数而不指定具体类型

将向量传递给C++中的线程函数

将 lambda 传递给函数模板

问题将模板类型传递给函数并用于局部变量赋值 c++

如何将成员函数指针传递给模板函数中的重载方法?