示例i有一个带整数值的向量,我想要计算该向量中没有指定我自己的运行时输入的元素。 考试矢量有元素10,20,30,40 在运行时我正在输入输入k;并且想要计算满足> k
int ar[4]={10,44,36,14};
vector<int>shiva(ar,ar+4);
int k;
cin>>k;
cout<<*count_if(shiva.begin(),shiva.end(),myfun(k));
如何制作结构功能? 我想打印满足&gt; k;
的元素总数答案 0 :(得分:3)
您可以使用lambda函数解决此问题。 count_if
函数遍历vector
shiva
并将每个元素作为int i
传递给lambda函数。 lambda函数检查i
是否大于k
并返回bool
。它知道k
的价值,因为我们允许它通过将捕获指定为k
来按值捕获变量[k]
。
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> shiva {10,44,36,14};
int k;
std::cin >> k;
std::cout << std::count_if(shiva.begin(),
shiva.end(),
[k](int i) { return i > k; })
<< std::endl;
return 0;
}
答案 1 :(得分:2)
lambda只是具有重载operator()的结构的语法糖。
这是一个如何使用C ++ 98完成演示的演示:
char vigenere_letter (char plain_text, char key_letter) {
int rotation;
string new_alphabet;
rotation = plain_text - "a";
new_alphabet = rotate_left(rotation, alphabet);
}