当我不使用调试器时,C ++似乎忽略了代码行

时间:2017-01-05 11:35:13

标签: c++

你好,我只是想提一下我试着搜索这个话题但没找到任何东西,所以我的问题在这里:

我写了一个小程序,我想制作一个包含更新时间戳的列表。所以我写了一个小班来处理这件事。 (我遗漏了不必要的东西)

编辑:还要提一下,实际的功能是在一个.cpp文件中,这是带有添加功能的标题,仅供参考我实际编写的内容。

#pragma once
#include <chrono>
#include <map>

class TimeHandler
{
public:
    TimeHandler();
    ~TimeHandler();

    std::map<std::chrono::milliseconds, std::string> getTimeList();
    /*add a timepoint for the current time to the timelist*/
    void addTimePoint(std::string name);
    /*print the timelist*/
    void print();
private:
    std::map<std::chrono::milliseconds,std::string> timeList;
};

void TimeHandler::addTimePoint(std::string name)
{
    std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch());
    timeList.insert( std::make_pair(ms, name) );
    //std::cout << "\n adding";
}

该类只处理我可以添加描述的时间事件。

现在我的问题。我将对象的指针指向其他函数,以便在它们的开头和结尾调用addTimePoint函数。 但并非所有时间都在那里。如果我在addTimePoint和debug中放置一个断点,一切正常,如果我在插入后添加一个std :: cout)。 但是如果我没有std :: cout或使用debuger它就不会把所有东西都放在地图上。

如果有人可以帮助我,那么问题似乎就在于任何想法的结尾。

请不要因为我的英语不好而判断我,我还在学习。

1 个答案:

答案 0 :(得分:1)

谢谢大家的帮助,答案确实是,所花费的时间太短,因此第二次无法添加,因为时间戳是相同的。 (并且地图只能存储每个键一次)

我现在正在使用矢量:)