gpt4 book ai didi

c++ - 按子字符串对字符串 vector 进行排序?

转载 作者:太空狗 更新时间:2023-10-29 20:09:09 25 4
gpt4 key购买 nike

我有一个包含许多相同形式的字符串的 vector :

'12345 QWERTY'
'23456 ASDFGH'
'34567 ZXCVBN'

我需要按代码(int 类型)和名称(string 类型)对它们进行排序。我正在考虑使用 .substr() 函数来忽略这些数字。有什么方法可以在排序函数中使用它吗?

一种尝试是创建一个映射函数来补充'sort()':

bool mapFunc(string a, string b) 
{
return a.substr(6) < b.substr(6));
}

插入排序函数:

sort(begin, end, mapFunc);

其中“开始”和“结束”都是指向我的 vector 开始和结束的迭代器。

如果我在这里有任何错误,请纠正我:)

最佳答案

通过将自定义谓词传递给 std::sort(),您走在了正确的轨道上。你只需要充实它:

void split(const string &s, int &code, string &name) {
size_t idx = s.find(' ');
code = stoi(s.substr(0, idx));
name = s.substr(idx+1);
}

bool mapFunc(const string &a, const string &b) {
int code1, code2;
string name1, name2;
split(a, code1, name1);
split(b, code2, name2);
if (code1 == code2)
return name1 < name2;
return code1 < code2;
}

这将首先按数字代码对 vector 项目进行排序,并且仅对具有相同代码值的项目按名称排序。

关于c++ - 按子字符串对字符串 vector 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com