我在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});
^
经过几次谷歌搜索会议后,我想出了一个更精细的方法来使用带有lambda函数的std :: find_if来解决这个问题,但为什么这段代码不起作用呢?
答案 0 :(得分:5)
你只需要更加冗长。
auto it = std::find(a.begin(), a.end(), std::array<int, 3>{2, 3, 1});
使用gcc 5.3.1验证。不确定您的旧版gcc是否会处理此问题。