提升日期不可变 - 那么如何在循环中使用它?

时间:2013-01-19 13:50:31

标签: c++ datetime boost

boost pdate是不可变的,所以如何在循环中使用它?我需要与最后处理的日期进行比较:

    date last(neg_infin);
    for (int i = 0; i < tasks.size(); i++) {
            if (tasks[i]->getTime().date() > last) {
                cout << ":::" << tasks[i]->getTime().date() << ":::" << endl;
            }
            cout << "[" << i << "]" << '\t';
            tasks[i]->print();
            // i need to change the last date here
            cout << endl;
        }

即。如果当前时间的日期部分晚于上一个,则打印日期,否则只打印时间

2 个答案:

答案 0 :(得分:0)

好吧,既然你已经将索引处理成tasks,而是存储“最后”索引,而不是日期。

int lastIndex = 0;
for (int i = 1; i < tasks.size(); i++) {
        if (tasks[i]->getTime().date() > tasks[lastIndex]->getTime.date()) {
            cout << ":::" << tasks[i]->getTime().date() << ":::" << endl;

        }
        cout << "[" << i << "]" << '\t';
        tasks[i]->print();

        lastIndex = i;

        cout << endl;
    }

答案 1 :(得分:0)

为什么需要显式的最后一个元素?这项工作也不合适吗?

if (i == 0 || tasks[i]->getTime().date() > tasks[i-1]->getTime.date()) {