我可能做一些基本的錯誤,在這裏,但給出:麻煩與嵌套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