簡體   English   中英

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.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM