因此,我正在为deque容器编写一个简单的模板搜索函数。以下是代码:
template <typename T>
void searchInDequeFor(std::deque<T> Deque, T searchValue)
{
for(const auto & element : Deque)
{
if(Deque.empty())
{
std::cout << "Deque is empty, nothing to search for..." << "\n";
}
else if(element==searchValue)
{
std::cout << searchValue << " matches " << element << ", an element in the deque" << "\n";
}
}
}
这里是我在主函数中调用该函数的方法:
deque<string> myDeque={"apple", "banana", "pear", "blueberry"};
searchInDequeFor(myDeque,"pear");
我遇到的错误是:
candidate template ignored: deduced conflicting types for parameter 'T' ('std::__1::basic_string<char>' vs. 'const char *')
现在,我已经测试了这个函数的整数、浮点数、双精度等类型,并且对于这些类型它可以正常运行,这意味着我的模板正在工作。但是,让我感到困惑的是,为什么当函数明显知道我传入的是字符串类型的 deque 而不是 const char * 类型时,我还是会遇到这个错误。任何帮助都将是非常棒的。谢谢!