余晖~ 2022-07-20 13:39 采纳率: 90.3%
浏览 98
已结题

为什么sort对vector<string>排序不起作用?

问题遇到的现象和发生背景

vector里面存string字符串,我想用sort把里面的字符串按照字母序进行排序,发现好像不可行,怎么做才是正确的

问题相关代码,请勿粘贴截图
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
const int maxn = 3000;
vector<vector<string> > hashTable(maxn);
int main()
{
    int n, k;
    int No, num, temp;
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; i++) {
        string name;
        scanf("%s %d", name.c_str(), &num);
        for (int j = 0; j < num; j++) {
            scanf("%d", &temp);
            hashTable[temp].push_back(name);
        }
    }
    for (int i = 1; i <= k; i++) {
        printf("%d %d\n", i, hashTable[i].size());
        sort(hashTable[i].begin(), hashTable[i].end());
        for (int j = 0; j < hashTable[i].size(); j++) {
            printf("%s\n", hashTable[i][j].c_str());
        }
    }
    return 0;
}
运行结果及报错内容

正确的顺序是这样:

img

而我的却是这样,好像sort根本就没有起作用:

img

我想要达到的结果

为什么sort没有将vector里面的字符串按照字母序进行排序呢,怎么做才是正确的?

  • 写回答

4条回答 默认 最新

  • 爱晚乏客游 2022-07-20 14:56
    关注

    sort可以对string进行排序的,默认就是从小到大一位一位字母进行比较ASCII码大小。

    img


    我试了下你的排序部分没问题啊,你贴的输出是哪里的输出,我用的vs2019正常的啊,你看下输入之后排序之前的的数组内数据正确吗?
    还是说你的是测试平台?测试平台的话看下题目说明是否禁用了sort,有些题目要求你实现这个sort的,你直接用肯定不行啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 已采纳回答 7月20日
  • 创建了问题 7月20日