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

 

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

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

/home/xxx/xxx.cpp:163:63: error: no matching function for call to ‘find(std::vector<int>::iterator, std::vector<int>::ite
rator, __gnu_cxx::__alloc_traits<std::allocator<int> >::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<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__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<int*, std::vector<int> >’ is not derived from ‘std::istre
ambuf_iterator<_CharT>’
         it = find(tQubits.begin(), tQubits.end(), AllQubits[i]);
                                                               ^

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

添加一行#include<algorithm>就解决啦!

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

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值