gpt4 book ai didi

c++ - 如何修复 "error: ‘_1’ 未在此范围内声明”?

转载 作者:行者123 更新时间:2023-12-01 14:35:49 26 4
gpt4 key购买 nike

我目前正在尝试将函数绑定(bind)到我打算使用的算法。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int main(){
vector<int> coll{1, 2, 3, 4, 5, 6};

vector<int>::iterator pos;
pos = find_if (coll.begin(), coll.end(),
bind(greater<int>(),_1,3));

return 0;
}
并得到这个错误反馈:
AlgoTesting.cpp: In function ‘int main()’:
AlgoTesting.cpp:184:41: error: ‘_1’ was not declared in this scope
bind(greater<int>(),_1,3)); // criterion
^~
AlgoTesting.cpp:184:41: note: suggested alternative:
In file included from algostuff.hpp:15:0,
from AlgoTesting.cpp:5:
/usr/include/c++/7/functional:275:34: note: ‘std::placeholders::_1’
extern const _Placeholder<1> _1;
^~
我正在努力理解错误日志的含义。有谁知道我在这里想念什么?

最佳答案

您需要包含 <functional> 并使用 std::placeholders::_1

pos = find_if (coll.begin(), coll.end(), bind(greater<int>(),placeholders::_1,3));
更简单的选择是使用 lambda :
pos = find_if(coll.begin(), coll.end(), [](int v) { return std::greater<int>{}(v, 3); });
或者
pos = find_if(coll.begin(), coll.end(), [](int v) { return 3 < v; });

关于c++ - 如何修复 "error: ‘_1’ 未在此范围内声明”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62737525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com