更新:我遵循了John的指导并修改了他的代码,通过创建比较器函数解决了我的问题,并将其插入到STL map中的Compare参数中.由于我的字符串日期严格采用所示格式,因此使用substr会很好.我的输出和代码如下,供您参考.
Date Total Sales
01JAN1900 $4
20JAN1902 $40
18NOV1912 $2500
19NOV1912 $2500
19OCT1923 $25
01JAN1991 $22
15NOV1991 $300
Grand Total: $5391
struct CompareDates
:
public std::binary_function <bool, std::string, std::string>
{
bool operator() (const std::string& lhs, const std::string& rhs)
{
if(lhs.substr(5,4) < rhs.substr(5,4))
{
return true;
}
else if (lhs.substr(5,4) == rhs.substr(5,4) && lhs.substr(2,3) < rhs.substr(2,3))
{
return true;
}
else if (lhs.substr(5,4) == rhs.substr(5,4) && lhs.substr(2,3) == rhs.substr(2,3) && lhs.substr(0,2) < rhs.substr(0,2))
{
return true;
}
else
{
return …Run Code Online (Sandbox Code Playgroud)