gpt4 book ai didi

c++ - 排序存储在 vector 中的日期(字符串)

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:28 24 4
gpt4 key购买 nike

我有一个 vector 包含这种格式的日期,DDMMMYY,例如 12Jan14

vector<string> tempDate

当我使用 STL 排序时,基本上当所有日期都在同一年/月时它会起作用。 01Jan14, 05Jan14, 11Jan14 等等,但是当我输入02Feb14的时候,就全乱了。

排序(tempDate.begin(), tempDate.end())

谁能告诉我它出了什么问题?

编辑:我尝试使用模板,但它不起作用,因为所有字符串都被“拆分”了。我在 sortDayMonthYear 中做了一些故障排除

template <class T>
bool sortDayMonthYear(T a, T b)
{
for (int i =0; i < a.size(); i++)
cout << a.at(i)<< endl;
}

我得到的是这样的

0
1
J
A
N
1
4
0
2
J
A
N
1
4

其实我打算做的是把这两个字符串传给模板函数,用substr得到日、月、年,比较并返回true或false。

最佳答案

您的谓词应该将两个常量字符串引用作为参数,然后使用它们来决定哪个比另一个“小”。

所以:

bool sortDayMonthYear(const std::string& first, const std::string& second)
{
// Algorithm to find out which string is "lesser" than the other
}

然后在排序时使用那个比较函数:

std::sort(std::begin(tempDate), std::end(tempDate), sortDayMonthYear);

关于c++ - 排序存储在 vector 中的日期(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21095441/

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