- 如何任意排序String
- String删除操作任意字符
任意排序
排序我们可以用标准库给我们提供好的算法,或者也可以自己写排序函数,我们主要用到std::sort(),因为string类本身并没有提供排序算法。
#include <iostream>
#include <array>
#include <algorithm>
#include <string>
struct {
bool operator()(const string a, const string b)
{
return a.length() > b.length();
}
}comparefun; //给定一个函数对象,重载()
namespace std
{//重载标准库<,sort()会自动调用<
bool operator<(const string a, const string b)
{
return a.length()>b.length();
}
}
int main(int argc, const char * argv[]) {
// 使用自定义排序函数
array<string, 5> a = {"11111","1111","11","1","111"};
sort(a.begin(), a.end(), comparefun);
{sort(a.begin(), a.end());} //重载标准库<,这个就要注意了
for (auto x : a) {
cout<<x<<" ";
}
cout<<endl;
return 0;
}
String删除操作任意字符
string提供了find()和erase()函数。删除一个字符串里的所有的空格:
string str("abc defg 12345");
while (str.find(' ') != string::npos) {
str.erase(find(str.begin(), str.end(), ' '));
}
cout<<str<<endl;