You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中不使用数组对字符串内姓名列表按字母序排序的方法

在C++中无数组实现姓名列表排序的方案

完全可行,不用原生数组的情况下,借助C++标准库的容器和工具就能轻松实现。以下是具体实现步骤和代码示例:

步骤1:拆分字符串中的姓名列表

首先需要从输入字符串中提取出每个姓名,假设姓名之间用逗号+空格(或其他自定义分隔符)分隔,可以用std::stringstream配合std::getline完成拆分:

#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <set>

int main() {
    std::string nameStr = "Bob, Alice, Charlie, Dave, Bob";
    std::stringstream ss(nameStr);
    std::string name;

    // 方案1:用std::list存储并手动排序(支持重复姓名)
    std::list<std::string> nameList;
    while (std::getline(ss, name, ',')) {
        // 去除姓名前后的空格(如果有的话)
        size_t start = name.find_first_not_of(" ");
        size_t end = name.find_last_not_of(" ");
        if (start != std::string::npos && end != std::string::npos) {
            name = name.substr(start, end - start + 1);
        }
        nameList.push_back(name);
    }
    // 调用list自带的sort方法按字母顺序排序
    nameList.sort();

    std::cout << "排序后的姓名列表(list方案):\n";
    for (const auto& n : nameList) {
        std::cout << n << "\n";
    }

    // 重置stringstream,用于方案2
    ss.clear();
    ss.str(nameStr);

    // 方案2:用std::multiset自动排序(支持重复姓名,自动去重用std::set)
    std::multiset<std::string> nameSet;
    while (std::getline(ss, name, ',')) {
        size_t start = name.find_first_not_of(" ");
        size_t end = name.find_last_not_of(" ");
        if (start != std::string::npos && end != std::string::npos) {
            name = name.substr(start, end - start + 1);
        }
        nameSet.insert(name);
    }

    std::cout << "\n排序后的姓名列表(multiset方案):\n";
    for (const auto& n : nameSet) {
        std::cout << n << "\n";
    }

    return 0;
}

关键说明

  • 拆分逻辑:通过getline(ss, name, ',')按逗号拆分字符串,额外处理空格是为了避免姓名前后的空白字符影响排序。
  • list方案:std::list是双向链表,不属于数组结构,自带的sort()方法会直接对链表元素进行字典序排序(默认按std::less<std::string>规则,即字母顺序)。
  • multiset方案:std::multiset是有序关联容器,插入元素时会自动按字母顺序排列,且允许重复元素;如果不需要重复姓名,换成std::set即可自动去重并排序。
  • 两种方案都完全不需要使用原生数组(如std::string arr[]),全程依赖标准库容器完成存储和排序。

内容的提问来源于stack exchange,提问作者Jojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:12:37