c++03相关内容

RAII对象,用于还原先前的值

也许我已经考虑过了,但是请考虑以下示例: bool some_state = false; // ... later ... some_state = true; do_something(); some_state = false; 现在想象一下do_something()会抛出.我们不会将some_state设置回false.最好是具有某种自动堆栈,该堆栈会根据范围推入/弹出来记 ..
发布时间:2020-09-22 05:23:56 C/C++开发

覆盖MSVC ++中的内存分配器

尽管Microsoft标准运行时提供了分配功能的调试版本,但它实际上不起作用,因为您不应该在C ++代码中使用裸露的新内容,因此检测指向标准库,否则就指向标准库,因为标准库不能反正装备了. 现在,我拥有可以产生(并记录)分配回溯的代码,并且我还使用了 DUMA .但是,当我们使用流时,替换分配函数的尝试失败了,因为streambuf调用某些调试变量,并且new和delete之间的用法不一致. ..
发布时间:2020-07-13 23:46:47 C/C++开发

随机数生成器:应该用作单例吗?

我在多个地方使用随机数,通常在需要时构造一个随机数生成器.目前,我使用Marsaglia Xorshift算法将其与当前系统时间一起作为种子. 现在,我对此策略有一些疑问: 如果我使用多个生成器,则生成器之间数字的独立性(随机性)取决于种子(相同种子的相同数字).由于我将时间(ns)用作种子,并且由于该时间发生了变化,因此我想知道是否仅使用一个奇异发生器和例如使它作为单例可用.这会增加随机数的质量 ..
发布时间:2020-07-04 01:52:17 C/C++开发

查找指向NULL的指针

我有int* foo[SIZE],我想在其中搜索第一个指向NULL的元素. 但是当我这样做时: std::find(foo, foo + SIZE, NULL) 我得到了错误: 错误C2446:'==':没有从'const int'到'int *' 的转换 我应该只使用static_cast(NULL)而不是NULL吗? C ++ 11通过 nullp ..
发布时间:2020-07-01 22:59:55 C/C++开发

如何定义同时支持C ++ 03和C ++ 11的nullptr?

可能重复: “反向移植"将nullptr转换为C ++-pre-C ++ 0x程序 如何定义nullptr以同时支持C ++ 03和C ++ 11? 下面的代码可以在不更改C ++ 11编译器中nullptr的含义的情况下使用C ++ 03和C ++ 11编译器编译吗? #include #if !defined(nullptr) #define null ..
发布时间:2020-07-01 22:56:26 C/C++开发

创建一个单词对齐的char向量

我需要创建一个原始缓冲区数据类,它必须返回一个指向 char 的指针,该指针必须保证字对齐。 我正在考虑使用 std :: vector>。 vec 。 我知道 std :: vector 将使用 operator new 分配内存,该内存可以保证返回最大对齐的内存,但我不想依赖于此。 我也不想创建自己的对齐分配器。 这就是我想出的:(假装 ui ..
发布时间:2020-06-03 22:29:45 C/C++开发

如何在不与标准库运算符冲突的情况下为一组相关类的模板重载运算符?

这似乎是一个相当简单的想法:我有一组类,我应该能够为这些类写一个运算符,比如用基本相同的代码进行减法. 当尝试以“显而易见的"方式执行此操作时,即: template T operator-(T a, const T& b) { return a -= b; } 然后,在某些编译器上,这似乎与迭代器的减法运算符发生冲突(特别是在gcc 3.4.6和 ..
发布时间:2020-05-21 19:31:44 C/C++开发

更改或检查std :: ofstream的openmode

在一些使用std::ofstream执行大量文件I/O的代码中,我在缓存流以提高效率.但是,有时我需要更改文件的打开模式(例如,append vs truncate).这是一些类似的模拟代码: class Logger { public: void write(const std::string& str, std::ios_base::openmode mode) { ..
发布时间:2020-05-19 21:46:17 C/C++开发

线程之间的更改通知标志是否需要内存屏障?

为了更新读取缓存,我需要一个非常快速的线程通知机制(在某种意义上是“阅读器的低成本",而不是“低延迟"): 情况 线程W(编写器)仅偶尔更新一次数据结构(S)(在我的情况下为地图中的设置). 线程R(读取器)维护S的缓存,并且确实非常频繁地读取它.当线程W更新S时,需要在合理的时间(10-100毫秒)内将更新通知给线程R. 体系结构是ARM,x86和x86_64.我需要在g ..
发布时间:2020-05-13 22:31:46 C/C++开发

C ++ std容器的线程安全

我在这里阅读了很多关于以下问题的文章:C ++的标准容器(例如"list"或"map")是否是线程安全的,并且所有人都说这不是一般情况.并行读取应该可以,但是并行写入或并行读取和写入可能会导致问题. 现在,我发现在 www.cplusplus.com 上,大多数情况下都可以访问或修改列表操作很安全. 一些例子: map ::查找 访问容器(const版本和非const版本都 ..
发布时间:2020-05-13 20:57:51 C/C++开发

通过CRTP和多重继承消除冗余

这个问题是针对C ++ 03的,而不是针对C ++ 11的. 在某些情况下,我正在使用具有多重继承的CRTP,并且我很想知道是否有一种方法可以删除在指定以下B类型时创建的冗余. #include "boost/typeof/typeof.hpp" #include "boost/units/detail/utility.hpp" #include #include ..
发布时间:2020-05-13 19:15:22 C/C++开发

MATLAB R2016b-MEX无法编译C ++代码

我的最新帖子杂乱无章的信息很多.部分原因是这个问题,希望它本身提供更多信息会更有意义. 我正在尝试使用MATLAB R2016b中的mex在Windows上编译C ++ 03代码. 当我尝试这样做时,出现以下错误: Error using mex cpp_mexapi_version.o: In function `mexfilerequiredapiversion': C:/P ..
发布时间:2020-05-06 15:19:31 C/C++开发

值初始化是C ++ 98标准的一部分吗?如果不是,为什么将它添加到C ++ 03标准中?

干杯和健康. -Alf在答案中发表了评论,与C ++相比,值初始化可以说是C ++ 03的新功能. 98.我想知道他是什么意思. C ++ 98的值初始化的一部分吗?它在概念上存在但在名称上不存在吗?为什么将它添加到C ++ 03标准? 我有'03标准的副本,但没有'98标准的副本.这是默认初始化和值初始化的定义. 默认初始化T类型的对象的意思是: -如果T是非POD类类型 ..
发布时间:2020-04-27 04:57:23 C/C++开发

*&++++ i是否会在C ++ 03中导致未定义的行为?

在另一个答案中指出,在C ++ 11之前,其中i是int ,然后使用表达式: *&++i 引起不确定的行为.这是真的吗? 在另一个答案上,在评论中进行了一些讨论,但似乎没有说服力. 解决方案 询问*&++i本身是否具有UB毫无意义.延迟不一定访问i的存储值(优先级或新值),如将其用作引用的初始化表达式所见.只有涉及右值转换(在这种情况下使用)时,才有任何问题需要讨论.然后, ..

运算符对C ++ 11进行模更改?

可能重复: C ++运算符的百分比保证 在c ++ 98/03中 5.6-4 二进制/运算符产生商,二进制%运算符 产生第一个表达式除以的余数 第二.如果/或%的第二个操作数为零,则行为为 不明确的;否则(a/b)* b + a%b等于a. 如果两个操作数 为非负数,则其余为非负数;如果不是,则为 其余的是实现定义的. 在c ++ 11中: 5.6 -4 二进 ..
发布时间:2020-04-27 04:22:48 C/C++开发

C ++ 03.在编译时(不仅在运行时)测试rvalue-vs-lvalue

在C ++ 03中,Boost的Foreach使用这项有趣的技术可以在运行时检测 表达式是左值还是右值. (我通过这个StackOverflow问题发现: C ++ 03中的Rvalues ) 这是在运行时进行演示的示例 (这是我在思考此问题时出现的一个更基本的问题, 现在,我已经阐明了这个问题,在编译时使用C ++ 03测试了右值性,我将谈论到目前为止我一直在尝试的事情. 我希 ..
发布时间:2020-04-27 04:22:32 C/C++开发