我可能做一些基本的错误,在这里,但给出:麻烦与嵌套Lambda表达式
std::array<int, 3> arr = { 1, 2, 3 };
std::vector<int> vecint;
vecint.push_back(1);
vecint.push_back(2);
这是在ARR的元素,其vecint的那些比较的有效方法之一。
std::for_each(vecint.begin(), vecint.end(), [&arr](int vecvalue) {
for (auto arritr = arr.begin(); arritr != arr.end(); ++arritr) {
if (vecvalue == *arritr) {
std::cout << "found!!! " << vecvalue << "\n";
}
}
});
但是,我应该能够这样做吗?
std::for_each(vecint.begin(), vecint.end(), [&arr](int vecvalue) {
if (std::find(arr.begin(), arr.end(), [=](int arrval) { return vecvalue == arrval; }) != arr.end()) {
std::cout << "found!!! " << vecvalue << "\n";
}
});
后者未能在VC11编译,错误如下:
1> C:\程序文件(86)\微软的Visual Studio 11.0 \ VC \包括\ xutility(3186):错误C2678 :二进制'==':没有发现操作符需要类型'int'的左侧操作数(或没有可接受的转换)
我在想什么?
谢谢!对我来说,这是一个愚蠢的疏忽。 – ForeverLearning