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

时间:2016-06-04 00:39:39

标签: 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});

返回错误

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

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

1 个答案:

答案 0 :(得分:5)

你只需要更加冗长。

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

使用gcc 5.3.1验证。不确定您的旧版gcc是否会处理此问题。