📅  最后修改于: 2023-12-03 15:39:02.821000             🧑  作者: Mango
在C++中,我们可以使用std::sort()
将一个向量中的字符串进行排序。下面是一个示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<std::string> my_vector {"pear", "apple", "banana", "orange"};
// 使用std::sort()进行排序
std::sort(my_vector.begin(), my_vector.end());
// 输出排序后的向量
for(const auto& element : my_vector)
{
std::cout << element << " ";
}
return 0;
}
输出结果:
apple banana orange pear
这里我们使用了std::vector
存储字符串,并使用my_vector.begin()
和my_vector.end()
指定排序范围。std::sort()
会对这个范围内的元素进行排序。
需要注意的是,std::sort()
默认是按照字符串的字典序进行排序的。如果需要按照其他方式进行排序,可以使用自定义的比较函数,如下所示:
#include <iostream>
#include <vector>
#include <algorithm>
bool my_sort_function(const std::string& first, const std::string& second)
{
// 比较字符串长度
if(first.length() < second.length())
{
return true;
}
else if(first.length() > second.length())
{
return false;
}
// 比较字符串本身
else
{
return first < second;
}
}
int main()
{
std::vector<std::string> my_vector {"pear", "apple", "banana", "orange"};
// 使用自定义的比较函数进行排序
std::sort(my_vector.begin(), my_vector.end(), my_sort_function);
// 输出排序后的向量
for(const auto& element : my_vector)
{
std::cout << element << " ";
}
return 0;
}
输出结果:
pear apple banana orange
这里我们自定义了一个比较函数my_sort_function()
,该函数首先比较字符串长度,若长度不同则返回长度较小的字符串;若长度相同,则按照字符串本身进行比较。在调用std::sort()
时,传入该比较函数,即可按照指定方式进行排序。
除了使用std::sort()
外,我们还可以使用std::stable_sort()
进行稳定排序。该函数与std::sort()
的使用方法相同,只是它在排序时保持相等元素的相对位置不变,因此也被称为“稳定排序”。
参考文献: