我在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函数来解决这个问题,但为什么这段代码不起作用呢?
你只需要更加冗长一点.
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是否会处理此问题.
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |