[英]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.0\vc\include\xutility 3243
我究竟做錯了什么?
算法需要知道謂詞是基於使用相等還是一元謂詞來比較值。 為了區分這兩者, _if
后綴用於各種算法: find_if()
, `copy_if()
, count_if()
等find_if()
是正常的,但它不是等式 - 與序列的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.