我想根据自己的参数使用count_if

时间:2017-10-16 18:37:20

标签: c++ stl

示例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;

的元素总数

2 个答案:

答案 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);
}