使用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对字符串进行排序的主要内容,如果未能解决你的问题,请参考以下文章

对数组中的字符串进行排序,使其稀疏

如何按值对 STL 映射进行排序?

C++ STL中排序算法的工作

c++ stl::priority queue 使用 2 个键排序不正确

C++与STL部分竞赛题目举例:Unix is 命令

如何在 RecyclerView 中对字符串元素进行排序?