c++11 lambda表达式问题(vs2012更新1)
c++11 lambda expression issue (vs2012 update 1)
我一直在摆弄lambda表达式以了解它们是如何工作的,但是遇到了一个问题。我一直想弄清楚我做错了什么,但似乎找不到。编译器拒绝接受这个简单的例子:
int a = 2;
std::vector<int> vv(10);
vv[2]=2;
std::count( vv.begin(), vv.end(), [&a](int z) { return a == z; } );
我得到错误
Error 1 error C2678: binary '==' : no operator found
which takes a left-hand operand of type 'int' (or there is no
acceptable conversion) e:program files (x86)microsoft visual studio
11.0vcincludexutility 3243
我做错了什么?
算法需要知道谓词是基于使用相等还是一元谓词来比较值。为了区分两者,各种算法都使用了_if
后缀:find_if()
、`copy_if()
、count_if()
等。lambda是可以的,但它不能与序列的value_type
相等。在使用谓词时需要使用std::count_if()
:
std::count_if( vv.begin(), vv.end(), [&a](int z) { return a == z; } );
…或者一个值:
std::count( vv.begin(), vv.end(), a);
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 'DLLVERSIONINFO' 从VS2008将项目更新到VS2012后编译错误
- c++11 lambda表达式问题(vs2012更新1)