在 C++ 中根据字符串长度排序

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何在 C++ 编程语言中使用自定义排序方法根据字符串长度对字符串进行排序。你还将学习如何实现自定义排序逻辑,并以特定顺序对无序集合中的元素进行排序。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/FunctionsGroup(["`Functions`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp(("`C++`")) -.-> cpp/StandardLibraryGroup(["`Standard Library`"]) cpp(("`C++`")) -.-> cpp/SyntaxandStyleGroup(["`Syntax and Style`"]) cpp/BasicsGroup -.-> cpp/strings("`Strings`") cpp/FunctionsGroup -.-> cpp/function_parameters("`Function Parameters`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/IOandFileHandlingGroup -.-> cpp/files("`Files`") cpp/StandardLibraryGroup -.-> cpp/standard_containers("`Standard Containers`") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("`Code Formatting`") subgraph Lab Skills cpp/strings -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} cpp/function_parameters -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} cpp/output -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} cpp/files -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} cpp/standard_containers -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} cpp/code_formatting -.-> lab-96224{{"`在 C++ 中根据字符串长度排序`"}} end

创建新文件

第一步是创建一个新文件。打开终端并导航到 ~/project 目录。使用你喜欢的文本编辑器创建一个名为 main.cpp 的新文件。

cd ~/project
touch main.cpp

编写代码

将以下代码添加到 main.cpp 文件中。这段代码将根据字符串的长度对一组字符串进行排序。

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

// 如果第一个字符串的长度大于第二个字符串的长度,则返回 true
bool cmp(string x, string y)
{
    int n = x.length();
    int m = y.length();

    if (n > m)
        return true;
    else
        return false;
}

// 使用迭代器打印无序集合中的元素
void show(unordered_set<string> s)
{
    // 声明一个迭代器来遍历无序集合
    unordered_set<string>::iterator i;

    for (i = s.begin(); i != s.end(); i++)
    {
        cout << *i << "     "; // 使用 * 访问无序集合中的元素,因为 i 存储了每个元素的地址
    }

    cout << endl;
}

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " =====  演示在 C++ 中根据字符串长度排序的程序  ===== \n\n\n\n";

    cout << " *** 无序集合会自动删除重复元素并保持随机顺序。 *** \n\n";

    cout << " *** 这种随机顺序取决于内部使用的哈希函数。 *** \n\n";

    cout << " *** 可以通过将无序集合的元素复制到向量中来对其进行排序。 *** \n\n";

    // 无序集合声明(字符串的无序集合)
    unordered_set<string> s;

    // 使用 insert() 方法填充元素
    cout << "\n\n以随机顺序向无序集合中填充字符串。"; // 与集合不同,无序集合不会自动排序

    s.insert("Study");
    s.insert("Tonight");
    s.insert("Aditya");
    s.insert("Abhishek");
    s.insert("C++");
    s.insert("Hi");

    cout << "\n\n排序前无序集合中的元素为:\n ";
    show(s);

    // 声明一个向量并用无序集合的元素初始化它
    vector<string> v(s.begin(), s.end());

    // 使用自定义比较器按字符串长度的降序对向量元素进行排序
    sort(v.begin(), v.end(), cmp);

    cout << "\n\n使用自定义比较器按字符串长度的降序排序后,无序集合中的元素为:\n";

    // 声明一个迭代器来遍历向量
    vector<string>::iterator it;

    for (it = v.begin(); it != v.end(); it++)
    {
        cout << *it << "     "; // 使用 * 访问向量中的元素,因为 it 存储了每个元素的地址
    }

    cout << "\n\n\n";

    return 0;
}

编译并运行代码

要编译此代码,请在终端中导航到 ~/project 目录,并运行以下命令:

g++ main.cpp -o main && ./main

输出将显示排序后的字符串列表。

总结

在本实验中,你学习了如何通过编写 C++ 编程语言中的自定义排序方法对无序字符串集合进行排序。你还学习了如何实现自定义排序逻辑,并以特定顺序对无序集合中的元素进行排序。这些知识可以应用于广泛的编程项目中,帮助你编写高效且易于阅读的代码。

您可能感兴趣的其他 C++ 教程