gpt4 book ai didi

c++ - 仿函数和字符串 vector

转载 作者:行者123 更新时间:2023-11-30 01:23:27 26 4
gpt4 key购买 nike

我是仿函数主题的新手,所以我希望这个问题是有建设性的。

我有一个字符串数组 ()。我需要在仿函数的帮助下计算这些字符串的长度总和。

我的代码:

class LengthFinder{
private:
size_t sum;
public:
LengthFinder():sum(0){}

void operator()(string elem)
{
sum += elem.size();
}
operator int()
{
return sum;
}

};

int main(int argc, char* argv[])
{
vector< string > array;
array.push_back("string");
array.push_back("string1");
array.push_back("string11");

string elem;
int sum = std::for_each(array.begin(), array.end(), LengthFinder(/*??*/));
return 0;
}

我应该将什么传递给 LengthFinder(),以获取每个字符串并确定其大小?

最佳答案

不要为此使用for_each。它可以被迫完成这项工作,但这是相当多的额外工作,因为它并不是真正适合这项工作的工具。

您要使用的是 std::accumulate,它正是为您正在做的事情而构建的。

struct length : std::binary_function<size_t, size_t, std::string> {
size_t operator()(size_t a, std::string const &b) {
return a+b.length();
}
};

// ...
int sum = std::accumulate(array.begin(), array.end(), 0, length());

关于c++ - 仿函数和字符串 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951083/

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