如何在数组向量上使用std :: find?

use*_*089 3 c++ c++11

我在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});
Run Code Online (Sandbox Code Playgroud)

返回错误

couldn't deduce template parameter ‘_Tp’
      std::find(a.begin(), a.end(), {2, 3, 1});
                                             ^
Run Code Online (Sandbox Code Playgroud)

经过几次谷歌搜索会议后,我想出了一个更精细的方法来使用std :: find_if和lambda函数来解决这个问题,但为什么这段代码不起作用呢?

Sam*_*hik 5

你只需要更加冗长一点.

auto it = std::find(a.begin(), a.end(), std::array<int, 3>{2, 3, 1});
Run Code Online (Sandbox Code Playgroud)

已通过gcc 5.3.1验证.不确定您的旧版本的gcc是否会处理此问题.