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

C++ seems to ignore lines of code when i dont use the debugger

本文关键字:代码 C++ 调试器      更新时间:2023-10-16

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

我写了一个小程序,我想列出一个更新的时间戳列表。所以我写了一个小类来处理这方面的一切。(我遗漏了不必要的东西)

Edit:另外,实际的函数在.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中放置一个断点并进行调试,那么一切都会很好,如果我在插入后添加一个std::cout)。但是,如果我没有std::cout或使用调试器,它就不会把所有东西都放在映射中。

如果有人能帮我的话,我已经想不出问题出在哪里了。

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

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

我现在使用的是一个矢量:)