std :: map没有显示正确的键?

时间:2017-07-06 19:43:14

标签: c++ date c++11 stdmap

我正在使用像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-001199-00-001064-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;
}

0 个答案:

没有答案