我正在使用像std::vector<map<date::year_month_day, double>> data
这样的地图矢量。并且地图中有大约3000个数据。矢量大小约为2000.当我尝试访问std::map
的最后一个键时。我得到一些垃圾值。
for(const auto&it: data) {
cout << it.rbegin()->first << "\n";
}
我获得了1057-00-00
,1199-00-00
,1064-00-00
e.t.c而非2017-06-25
等值。可能是尺寸问题还是我错过了什么?
我在我的项目中使用HowardHinnant's date library。
样本数据是这样的
data = {
{{convertToDate("2017-06-25"), 10.24}, {convertToDate("2017-06-24"), 11.05}, {convertToDate("2017-06-23"), 10.98}, {convertToDate("2017-06-22), 11.0}},
{{convertToDate("2017-06-25"), 12.00}, {convertToDate("2017-06-24"), 12.05}, {convertToDate("2017-06-22"), 12.15}, {convertToDate("2017-06-20"), 12.50}},
{{convertToDate("2017-06-25"), 20.00}, {convertToDate("2017-06-24"), 21.00}, {convertToDate("2017-06-23"), 21.75}, {convertToDate("2017-06-22"), 21.0}}
};
为了澄清,我提供了日期为string
输入到下面给出的函数,该函数将其转换为date::year_month_day
类型
date::year_month_day convertToDate(string inp) {
std::string in = inp;
std::string dyear = in.substr(0,4);
std::string dmonth = in.substr(5,2);
std::string dday = in.substr(8,2);
int dYear = stoi(dyear);
int dMonth = stoi(dmonth);
int dDay = stoi(dday);
auto ymd = date::year{dYear}/dMonth/dDay;
if (!ymd.ok()) {
throw std::runtime_error("Invalid date");
}
return ymd;
}