C++ vector find error: no matching function for call to ‘find(std::vector::iterator, std::v

 

采用find方法来查找vector中的元素,居然发现奇怪的问题。

C++ vector find error: no matching function for call to ‘find(std::vector::iterator, std::v_第1张图片

我自己单独验证这个find函数时候,发现并没有问题。到这个代码里就很奇怪。

/home/xxx/xxx.cpp:163:63: error: no matching function for call to ‘find(std::vector::iterator, std::vector::ite
rator, __gnu_cxx::__alloc_traits >::value_type&)’
         it = find(tQubits.begin(), tQubits.end(), AllQubits[i]);
                                                               ^
In file included from /usr/include/c++/6/bits/locale_facets.h:48:0,
                 from /usr/include/c++/6/bits/basic_ios.h:37,
                 from /usr/include/c++/6/ios:44,
                 from /usr/include/c++/6/istream:38,
                 from /usr/include/c++/6/fstream:38,
                 from /home/fdd/Quantum_simulator/shor_factoring/core/QCore.h:11,
                 from /home/fdd/Quantum_simulator/shor_factoring/core/QCore.cpp:8:
/usr/include/c++/6/bits/streambuf_iterator.h:369:5: note: candidate: template typename __gnu_cxx::__enable_if::__value, st
d::istreambuf_iterator<_CharT> >::__type std::find(std::istreambuf_iterator<_CharT>, std::istreambuf_iterator<_CharT>, const _CharT2&)
     find(istreambuf_iterator<_CharT> __first,
     ^~~~
/usr/include/c++/6/bits/streambuf_iterator.h:369:5: note:   template argument deduction/substitution failed:
/home/xxx/xxx.cpp:163:63: note:   ‘__gnu_cxx::__normal_iterator >’ is not derived from ‘std::istre
ambuf_iterator<_CharT>’
         it = find(tQubits.begin(), tQubits.end(), AllQubits[i]);
                                                               ^

花了好久,最后在国外一个网站上找到解决方法。find函数需要包含algorithm的头文件。。。

添加一行#include就解决啦!

所以得记录一笔,希望对后人有帮助!

你可能感兴趣的:(C++ vector find error: no matching function for call to ‘find(std::vector::iterator, std::v)