c++ string 排序
时间: 2024-12-30 20:18:42 浏览: 8
### 关于C++中的字符串排序方法
#### 使用标准库函数`std::sort`
对于容器内的字符串排序,可以利用STL提供的`std::sort`算法。此算法接受两个迭代器参数来指定要排序的范围,并可选地接收第三个比较函数作为自定义排序准则。
```cpp
#include <algorithm>
#include <vector>
#include <string>
int main() {
std::vector<std::string> words = {"banana", "apple", "cherry"};
// 对words按照字典顺序升序排列
std::sort(words.begin(), words.end());
// 如果想要降序,则提供lambda表达式作为第三参数
std::sort(words.begin(), words.end(),
[](const std::string& a, const std::string& b) { return a > b; });
}
```
上述代码展示了如何通过传递不同的比较谓词给`std::sort`实现升序或降序排序[^1]。
#### 利用成员函数`std::string::compare`
当处理单个字符串内部字符重新排列的情况时,可以直接操作字符串对象并调用其成员函数来进行两两对比:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
void sortString(std::string &str){
int n = str.length();
char temp;
bool swapped;
do{
swapped=false;
for(int i=0;i<n-1;++i){
if(str[i]>str[i+1]){
temp=str[i];
str[i]=str[i+1];
str[i+1]=temp;
swapped=true;
}
}
--n;
}while(swapped);
}
int main(){
std::string s="dcba";
sortString(s);
std::cout << "Sorted string is : "<<s<<'\n';
}
```
这段程序实现了简单的冒泡排序逻辑用于调整输入字符串`s`内各个字母的位置直至形成按ASCII码从小到大有序的结果。
阅读全文