草庐IT

second_points

全部标签

c++ - 如何将分数纪元时间戳( double )转换为 std::chrono::time_point?

我有一个小数纪元时间戳,表示为double,我想将其转换为适当的std::chrono::time_point。纪元是自1/1/1970以来的常用UNIX纪元。我知道存在std::chrono::system_clock::from_time_t,但是time_t没有小数部分。使用C++11方法执行此操作的最佳方法是什么?这个问题与unixtimestamptoboost::posix_time::ptime有关,除了它要求的是C++11而不是它的Boost版本。 最佳答案 假设纪元与已知的时钟类型相同,您可以使用具有double表

c++ - 将 steady_clock::time_point 转换为 time_t

我正在使用steady_clock来保存一些消息的时间戳。出于调试目的,拥有日历(或类似的东西)很有用。对于其他时钟,有静态函数to_time_t,但在GCC(MinGW4.8.0)上,此函数不存在。现在我打印类似的东西:Timestamp:26735259098242对于时间戳,我需要一个steady_clock,所以我不能使用system_clock或其他。编辑之前的打印是从time_since_epoch().count()给出的 最佳答案 假设您需要内部计算的稳定行为,而不是显示,这里有一个函数可用于转换为time_t以供显

c++ - 获取 POSIX 纪元作为 system_clock::time_point

我知道std::chrono::system_clock::time_point的默认值是时钟的纪元,但我在C++11标准中找不到任何规定system_clock的纪元与POSIX纪元(1970-01-01T00:00:00Z)相同。在Linux和Windows上假设是这种情况是否安全?或者使用std::chrono::system_clock::from_time_t(0)会更聪明吗? 最佳答案 标准离开std::chrono::system_clock::time_point的纪元未指定。std::chrono::system_

c++ - “The procedure entry point… could not be located” 在错误的 DLL 中

我已经从Haskell代码创建了一个DLL,我正在从C++调用这个DLL。当我在VisualStudio2010中以Debug模式运行时,我的应用程序工作正常,但是当我制作发布版本并安装它时,出现错误TheprocedureentrypointGetDataChunkcouldnotbelocatedinthedynamiclinklibraryAdvancedMath.dll.AdvancedMath.dll是我基于Haskell的DLL。奇怪的是函数GetDataChunk不在那个DLL中——它在我链接的另一个DLL中,而当我添加HaskellDLL时,那个DLL或我的应用程序对它

C++ 函数对象返回 `p->first` 和 `p->second`

有没有返回p->first和p->second的内置函数对象,让我可以愉快的写transform(m.begin(),m.end(),back_inserter(keys),get_first);transform(m.begin(),m.end(),back_inserter(vals),get_second);基于STL的解决方案是最好的,boost解决方案次之。是的,我知道boost::lambda,我不想开始使用它。 最佳答案 g++有非标准扩展和SGI称为select1st和select2nd。因此,STL中可能没有任何内

c++ - std::map: find(key)->second 比 [] 运算符快吗?

std::mapx;x[5]=1.2;doubley=x[5];doublez=x.find(5)->second;这2个分配中的一个会比另一个执行得更快吗?(假设请求的键始终存在于映射中)在执行x.find(5)->second时,是否存在与迭代器取消引用相关的任何开销?编辑:感谢您的回复。在我的特定函数中,既然我知道它并不慢,我可能会使用x.find(5)->second因为我需要标记我的函数const(map是一个成员变量)并且[]运算符显然不允许这样做(因为它可能会修改map,因为缺少一个键)。 最佳答案 这没有回答您的问题

c++ - IEEE Std 754 Floating-Point : let t := a - b, 标准是否保证 a == b + t?

假设t,a,b都是double(IEEEStd754)变量,a,b不是NaN(但可能是Inf)。在t=a-b之后,我一定有a==b+t吗? 最佳答案 绝对不是。一个明显的例子是a=DBL_MAX,b=-DBL_MAX。那么t=INFINITY,所以b+t也是INFINITY。可能更令人惊讶的是,有些情况下会发生这种情况而没有任何溢出。基本上,它们都是a-b不准确的形式。例如,如果a是DBL_EPSILON/4并且b是-1,则a-b为1(假设默认舍入模式),a-b+b则为0。我提到第二个示例的原因是,这是在IEEE算法中强制舍入到特定

c++ - 一个 "hits in last [second/minute/hour]"数据结构的实现

我认为这是一个相当普遍的问题,但我似乎无法通过谷歌搜索找到答案(也许我不知道的问题有更准确的名称?)您需要使用用于报告命中的“hit()”方法和hitsInLastSecond|Minute|Hour方法来实现一个结构。你有一个精确到纳秒级的计时器。您如何有效地实现这一点?我的想法是这样的(在伪C++中)classHitCounter{voidhit(){hits_at[now()]=++last_count;}inthitsInLastSecond(){autobefore_count=hits_at.lower_bound(now()-1*second)if(before_coun

c++ - ->second 是否为迭代器 my_map.end() 定义?

我正在使用std::map.我想测试是否my_map.find(key)返回一个特定的指针。现在我在做;autoiter=my_map.find(key);if((iter!=my_map.end())&&(iter->second==expected)){//Somethingwonderfulhashappened}然而,operator*迭代器的需要返回一个引用。凭直觉我假设它是有效的并且完全初始化?如果是这样,my_map.end()->second将是NULL,并且(因为NULL从来都不是预期的),我可以将我的if语句减少到:if(iter->second==expected

windows - Visual Studio 2013 : How to send app to second monitor upon finishing build?

此问题仅与VS2013中的工作流有关。在VS2012中,当我构建我的应用程序时,VS会在连接到我的系统的第二台显示器上显示该应用程序。这很好,因为我可以在与应用程序交互时看到我的IDE。但是,在VS2013中,该应用程序始终只显示在IDE上,因此我“将其移开”只是为了返回代码。我希望VS2013的行为与VS2012中的行为相匹配。IDE中是否有我可以打开以确保应用程序显示在第二台显示器上的设置?我确实找到了anotherquestion关于关于VS2012的问题,但是那里的解决方案不适用于使用VS2013的Win8.1。有这个选项吗? 最佳答案