【发布时间】:2017-05-19 16:58:14
【问题描述】:
我正在使用 replace_if 解决一个简单的问题,但每次它都会给我错误。
问题:
在给定字符串中删除相邻字符并使字符串尽可能紧凑。
例如: aabcc 将变为 b,aabbcc 将变为空字符串。
int main()
{
string s;
cin>>s;
replace_if(s.begin(),s.end(),[](char l, char r){return l == r;},"");
cout << string(s.begin(),s.end());
return 0;
}
错误:
/usr/include/c++/6/bits/stl_algo.h:4280:12: note: candidate expects 3 arguments, 2 provided
solution.cc:19:51: note: candidate:
main()::<lambda(char, char)>
replace_if(s.begin(),s.end(),[](char l, char r){
【问题讨论】:
-
您遇到什么错误?你读过documentation of
replace_if吗? -
是的,阅读文档但无法理解..
-
@InvI
std::replace_if无法更改字符串的大小,它只能将元素从一个值更改为另一个值。寻找另一种方法。 -
如果您遵循此处的指南,这将对每个人都有帮助:stackoverflow.com/help/mcve
-
为什么要尝试使用名称中带有
replace的算法来删除元素?