介绍
在本实验中,你将学习如何在 C++ 编程语言中使用自定义排序方法根据字符串长度对字符串进行排序。你还将学习如何实现自定义排序逻辑,并以特定顺序对无序集合中的元素进行排序。
在本实验中,你将学习如何在 C++ 编程语言中使用自定义排序方法根据字符串长度对字符串进行排序。你还将学习如何实现自定义排序逻辑,并以特定顺序对无序集合中的元素进行排序。
第一步是创建一个新文件。打开终端并导航到 ~/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++ 编程语言中的自定义排序方法对无序字符串集合进行排序。你还学习了如何实现自定义排序逻辑,并以特定顺序对无序集合中的元素进行排序。这些知识可以应用于广泛的编程项目中,帮助你编写高效且易于阅读的代码。