【发布时间】:2020-09-12 18:40:12
【问题描述】:
我正在尝试获取字符串向量并删除每个不是字母的字符(数字、符号等)。我也没有尝试使用循环。
下面是一个向量的例子:
std::vector<std::string> a = {"he2llo*", "3worl$d"};
我希望返回的字符串如下所示:
std::vector<std::string> a = {"hello", "world"};
现在我正在尝试使用转换和擦除算法,但我无法正确使用语法。
这显然是不完整的,但这是我目前所拥有的基本设置:
int trim(std::vector<std::string> a){
std::transform(a.begin(), a.end(), a.erase())
【问题讨论】:
-
需要指定
transform的输出范围。此外,您可以编写一个 lambda,从字符串中删除非字母。 -
您确实意识到使用
begin()和end()的所有内容几乎肯定会在幕后循环,是吗?除了略短的源代码,我不确定通过避免显式循环你会获得什么。 -
@paxdiablo 人们可能会争辩说它更清楚地传达了意图。
-
我猜也可以使用递归..
-
我不允许为此使用循环。我想写 lambda 是我遇到的麻烦。
标签: c++ algorithm vector stl iterator