使用STL对字符串进行排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用STL对字符串进行排序相关的知识,希望对你有一定的参考价值。
我正在尝试使用C++ STL
对字符串的字符进行排序,并想出了这段代码。
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
int main()
{
using namespace std;
vector<string>::iterator it;
string arr[] = {"jajajaj"};
vector<string> v(arr, arr+2);
sort(v.begin(), v.end());
for (it=v.begin(); it<v.end(); it++) {
cout << *it;
}
return 0;
}
但不幸的是,当数组包含单个元素时,它没有正确排序。如何使用STL。请帮忙。
答案
如果你需要一个字符串,请使用std::string
:
(我使用了一个for-range循环来使代码更清晰)
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string s = {"jajajaj"};
sort(s.begin(), s.end());
for (auto c : s)
cout << c;
return 0;
}
输出:
aaajjjj
注意:
您当前的代码无法正常工作,因为,如评论所示,您从大小为1的数组中创建了一个大小为2的向量,该向量具有未定义的行为。
另一答案
您可以直接对字符串进行排序。
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main()
{
string str = "jajajaj";
sort(str.begin(), str.end());
cout << str;
return 0;
}
希望这可能会有所帮助。
另一答案
你似乎把std::string
和一系列字符混淆了。
int main()
{
using namespace std;
string arr = "jajajaj";
vector<char> v(arr.begin(), arr.end());
sort(v.begin(), v.end());
vector<char>::iterator it;
for (it=v.begin(); it<v.end(); ++it) {
cout << *it;
}
return 0;
}
我没有测试过,但它应该工作....
UPDATE:
或者,我们可以直接对字符串的字符进行排序:(谢谢大家!)
int main()
{
using namespace std;
string arr = "jajajaj";
sort(arr.begin(), arr.end());
cout << arr;
return 0;
}
另一答案
你可以使用sort()功能。 sort()存在于algorithm头文件中
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
string str = "sharlock";
sort(str.begin(), str.end());
cout<<str<<endl;
return 0;
}
输出:
achklors
另一答案
为了对字符串进行排序,只需从用户输入字符串并在STL中使用sort()。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string arr;
cin >>arr;
sort(arr.begin(), arr.end());
cout <<arr;
}
请参阅下面的示例图像,输入字符串为“Michael”。
以上是关于使用STL对字符串进行排序的主要内容,如果未能解决你的问题,请参考以下文章