gpt4 book ai didi

c++ - 使用 count_if() 查找相同的字符串值

转载 作者:行者123 更新时间:2023-12-02 01:53:05 42 4
gpt4 key购买 nike

我尝试使用 lambda 表达式和 count_if()vector 中查找相同的字符串值,但没有成功。错误信息是:

variable 'str' cannot be implicitly captured in a lambda with no capture-default specified

std::vector<std::string> hello{"Mon","Tue", "Wes", "perfect","Sun"};

for (unsigned int i = 0; i < hello.size(); i++)
{
int n=0;
std::string str=hello[i];
n=std::count_if(hello.begin(),hello.end(),[](std::string s){return s==str;});
std::cout<<n;
}

最佳答案

@史蒂文lambda 函数的括号 [] 称为捕获列表。它们定义 lambda 函数使用的变量范围。请参阅this reference .

当您使用此格式[&]时,这意味着您可以在 lambda 函数中查看当前作用域的所有变量(通过引用)。所以变量的类型并不重要。

对于您的示例,当您编写时:

s == str

lambda 函数只知道变量 s,该变量作为参数传递。要查看 str,您可以使用以下任一方法:

  1. [&],通过引用传递所有内容
  2. [&str],仅传递变量str作为引用

请注意,还有按值传递的方法。

关于c++ - 使用 count_if() 查找相同的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69984598/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com