📜  字符串的排序向量 - C++ (1)

📅  最后修改于: 2023-12-03 15:39:02.821000             🧑  作者: Mango

字符串的排序向量 - C++

在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()的使用方法相同,只是它在排序时保持相等元素的相对位置不变,因此也被称为“稳定排序”。

参考文献: