📌  相关文章
📜  按长度和字母对字符串进行排序 - C++ (1)

📅  最后修改于: 2023-12-03 14:54:41.422000             🧑  作者: Mango

按长度和字母对字符串进行排序 - C++

简介

本文介绍如何按照字符串的长度和字母顺序对字符串进行排序。本代码以C++为实现语言,使用STL中的vector和sort函数实现。

代码实现
定义结构体

首先我们需要定义一个结构体,用来存储字符串和长度的信息。

struct StringInfo {
    std::string str;
    int length;
};
读入字符串列表

使用vector存储字符串信息。

std::vector<StringInfo> strings; // 定义字符串列表
std::string input; // 定义输入变量
while (std::getline(std::cin, input)) { // 获取输入直到结束
    strings.push_back({input, input.length()}); // 将字符串和长度存储到vector中
}
排序

定义排序函数,按照长度和字母顺序进行排序。

bool cmp(StringInfo a, StringInfo b) {
    if (a.length != b.length) { // 长度不一致,按长度升序排序
        return a.length < b.length;
    } else { // 长度一致,按字母序升序排序
        return a.str < b.str;
    }
}

使用sort函数进行排序。

std::sort(strings.begin(), strings.end(), cmp); // 排序
输出结果

输出排序结果。

for (StringInfo si : strings) {
    std::cout << si.str << std::endl; // 输出字符串
}
完整代码
#include <iostream>
#include <vector>
#include <algorithm>

struct StringInfo {
    std::string str;
    int length;
};

bool cmp(StringInfo a, StringInfo b) {
    if (a.length != b.length) {
        return a.length < b.length;
    } else {
        return a.str < b.str;
    }
}

int main() {
    std::vector<StringInfo> strings;
    std::string input;
    while (std::getline(std::cin, input)) {
        strings.push_back({input, input.length()});
    }
    
    std::sort(strings.begin(), strings.end(), cmp);
    
    for (StringInfo si : strings) {
        std::cout << si.str << std::endl;
    }
    
    return 0;
}
总结

本文介绍了如何按照字符串的长度和字母顺序对字符串进行排序,使用的是C++中的vector和sort函数。对于字符串按照任意规则排序,可以根据需求自定义排序函数进行实现。