草庐IT

storage-duration

全部标签

c++ - GCC 7,aligned_storage 和 "dereferencing type-punned pointer will break strict-aliasing rules"

我编写的代码在GCC4.9、GCC5和GCC6中没有警告。它在一些较旧的GCC7实验快照(例如7-20170409)中也没有警告。但在最近的快照(包括第一个RC)中,它开始产生关于别名的警告。代码基本上可以归结为:#includestd::aligned_storage::typestorage;intmain(){*reinterpret_cast(&storage)=42;}使用最新的GCC7RC编译:$g++-Wall-O2-cmain.cppmain.cpp:Infunction'intmain()':main.cpp:7:34:warning:dereferencingtyp

c++ chrono duration_cast 到毫秒结果以秒为单位

我想要自纪元以来的毫秒数。一个流行的解决方案如下所示(这里提出的这个问题的解决方案之一Gettimesinceepochinmilliseconds,preferablyusingC++11chrono)#include#includeintmain(){automillitime=std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count();std::cout通过调用g++来编译它,比如g++-std=c++11main.cpp-otimetest产生输出13726860

c++ - 不同类型的 std::chrono::duration 的 std::min

考虑以下代码://durationsarefromstd::chronoautoa=get_duration_1();//milliseconds,willvaryinfutureversionsautob=get_duration_2();//seconds,willvaryinfutureversionsautoc=std::min(a,b);它无法编译,因为编译器无法实例化std::min的正确版本因为参数类型不同。当然,现在可以使用std::min明确指定类型.在此代码的future版本中,类型会有所不同。在不知道确切持续时间类型的情况下执行此操作的通用方法是什么?

c++ - 如何填充sockaddr_storage?

我正在尝试在我的应用程序中使用sockaddr_storage结构。我很好奇如何填写它。例如我有以下代码:sHostAddr.sin_family=AF_INET;sHostAddr.sin_addr.s_addr=inet_addr(cpIPAddress);如果我使用sockaddr_storage结构,我该如何替换它?我知道有一些char数组,我想我可以使用一些数组索引偏移量获得等效代码?提前致谢。 最佳答案 名字就是提示,sockaddr_storage只是用来存储的,不是用来访问的。在具有特定协议(protocol)结构的

实用性再提升!DURATION 数据类型现已支持交易日历!

DolphinDB自2.00.9/1.30.21版本开始,提供交易日历功能,并内置世界五十多个交易所的交易日历。借助交易日历,用户可以在DolphinDB中便捷查询指定范围内的交易日,或搭配内置函数,基于交易日进行日期偏移计算、数据采样等操作。最近,交易日历功能再次进行了更新。自2.00.11.1版本起,DURATION数据类型已支持交易日历。DURATION数据类型介绍在使用交易日历进行计算时,用户可以用“正负数字+4个大写字母”的形式表示交易所交易日历时间。以纽交所(XNYS)为例,假设Ti为基准日期,那么3XNYS代表第Ti+3个交易日,-3XNYS代表第Ti-3个交易日。除了使交易日期

c++ - std::chrono::duration_cast - GCC 实现有问题吗?

我想我在std::chrono::duration_cast的GCC实现中发现了一个错误。谁能证实我这一点?测试代码:usingTicks=std::chrono::duration>>;usingdur=typenamestd::chrono::system_clock::duration;intmain(){std::chrono::time_pointearliest{std::chrono::duration_cast(std::chrono::time_point::max().time_since_epoch())};autoticks=std::chrono::time_

c++ - 将 int64_t 转换为 time_duration

我想通过网络传输boost::posix_time::ptime作为boost::int64_t。根据Awaytoturnboost::posix_time::ptimeintoan__int64,我可以很容易地定义我自己的epoch并且仅将time_duration从该引用epoch传输为64位整数。但是如何转换回ptime呢?#include#include#include#includeusingnamespacestd;usingboost::posix_time::ptime;usingboost::posix_time::time_duration;usingboost::

c++ - sockaddr_storage 大小为 128 字节

我只是想知道为什么sockaddr_storage是128字节。我知道它必须至少是IPv6的28个字节,但是比sockaddr_in6多100个字节似乎有点过分。这只是为了将来证明存储结构,还是有理由现在需要它? 最佳答案 您将在rfc2553的§3.10中找到问题的答案。在这个SOpost.原因是至少应保存ip6和其他协议(protocol)数据,并64位对齐以提高效率。来自RFC的相关部分:OnesimpleadditiontothesocketsAPIthatcanhelpapplicationwritersisthe"str

c++ - 如何使用 std::chrono::duration 作为模板参数?

我有一个模板类,类似于:templateclassMyClass{}现在,我想将Seconds更改为持续时间,以便可以使用std::chrono::duration对类进行参数化。例如,我希望能够这样做:MyClassobject;此外,在模板中,我想指定一个默认值,例如std::chrono::seconds(30)。 最佳答案 您可以巧妙地设计模板:templateclassMyClass{//Nowyoucanusedurationhere://autoduration=Duration(duration_value);};然

c++ - 将 chrono::duration 转换为字符串或 C 字符串

我正在尝试制作一个表(一个9x11数组)来存储多个排序函数所花费的时间量。我想我希望表格是一个字符串。我目前无法解决如何将chrono转换为string并且无法在线找到任何资源。我是否需要放弃表的字符串类型,或者有没有办法将这些时间差异存储在一个字符串中?for(inti=0;ielapsed_seconds=end-start;table[1][i]=string(elapsed_seconds)//error:nomatchingconversionforfunctionalstylecast} 最佳答案 您需要流式传输到std