我在Ubuntu 14.04,g ++ 4.9.3上。下面的代码
std::vector<std::array<int, 3>> a;
a.push_back({2, 3, 1});
a.push_back({1, 3, 4});
a.push_back({3, 1, 2});
auto it = std::find(a.begin(), a.end(), {2, 3, 1});
返回错误
couldn't deduce template parameter ‘_Tp’
std::find(a.begin(), a.end(), {2, 3, 1});
^
经过几次谷歌搜索会话后,我想出了一种更复杂的方法,将std :: find_if与lambda函数一起使用来解决此问题,但是为什么这段代码不起作用?
您只需要稍微冗长一些即可。
auto it = std::find(a.begin(), a.end(), std::array<int, 3>{2, 3, 1});
已通过gcc 5.3.1验证。不知道您的旧版gcc是否可以处理此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句