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

不使用STL的C++类成员函数实现商品列表按名称字母序排序

实现方案

1. 完善InventoryItem的isLessThan比较函数

该函数用于判断当前商品名称的字典序是否小于传入的商品,我们手动实现字符串比较逻辑,无需依赖任何STL或第三方库:

bool InventoryItem::isLessThan(const InventoryItem& anItem){
    const char* curName = this->itemName;
    const char* targetName = anItem.itemName;
    // 逐字符比较
    while(*curName != '\0' && *targetName != '\0'){
        if(*curName < *targetName) return true;
        if(*curName > *targetName) return false;
        curName++;
        targetName++;
    }
    // 前缀相同的情况下,更短的字符串排在前面
    return *curName == '\0' && *targetName != '\0';
}

如果需要不区分大小写排序,只要在逐字符比较时将字符统一转为大写/小写再判断即可。

2. 给ItemList新增按名称排序的成员函数

首先在itemList.h的ItemList类公有成员声明中新增:

void sortByName();

然后在itemList.cpp中实现排序逻辑,采用手动实现的冒泡排序,完全不依赖STL接口,符合作业要求:

void ItemList::sortByName(){
    if(size <= 1) return;
    // 冒泡排序实现
    for(int i = 0; i < size - 1; i++){
        for(int j = 0; j < size - 1 - i; j++){
            // 若当前元素顺序不对则交换,用移动语义避免深拷贝开销
            if(!list[j].isLessThan(list[j+1])){
                InventoryItem temp = move(list[j]);
                list[j] = move(list[j+1]);
                list[j+1] = move(temp);
            }
        }
    }
}

直接调用sortByName()即可完成整个商品列表按名称字母顺序排序的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:00:00