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

How to use std::find on a vector of array?

本文关键字:std find 数组 向量      更新时间:2023-10-16

我在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 是否可以处理此问题。