草庐IT

双重性

全部标签

c++ - 从 abs(double) 而不是 int 获得双重结果

我需要计算两个double值之差的绝对值,并得到一个double结果。相反,我得到一个int。#include//...printf("a:%sb:%sdelta:%sabs:%s\n",typeid(a).name(),typeid(b).name(),typeid(a-b).name(),typeid(abs(a-b)).name());//Prints:a:db:ddelta:dabs:i如果减法的结果已经是double,为什么abs不使用doubleabs(doublex);签名?事实上,它怎么可能返回一个整数呢?最重要的是,我如何强制它返回一个double?以防万一,a和b实

c++ - 双重标准?为什么只对 char* const& a = "bla"发出警告?

在尝试深入研究thisquestion等案例背后的机制之后暴露了,我仍然不明白为什么下面代码中的第三行只生成警告,而第二行是错误。intmain(){constchar*const&a="bla";//Validcodeconstchar*&a2="bla";//Invalidcodechar*const&a3="bla";//Shouldbeinvalidbutsettlesforawarningreturn0;}我知道虽然引用初始化正在将字符串文字转换为指针引用,但它不应该删除任何cv-qualifiers对象具有,并且由于转换后的类型是constchar*const(从字符串文字

c++ - 避免双重包含 : Preprocessor directive vs. makefile

我正在努力从弗兰肯斯坦和一个文件数千行的程序转变为结构良好、组织良好的多文件程序。现在看起来很自然(天真)的是为我的三个文件制作一个包含标题的三角恋:file_1包括file_2、file_4file_2包括file_3、file_4file_3包括file_1....等等等等这些文件具有我在其他文件之间需要的变量、方法、结构等。当然,我遇到了双重包含错误。我的问题:我应该通过在header中使用预处理器指令(例如,完全在header中包括结构、方法等)来避免这些问题,还是应该使用makefile进行编译(我hear也可以用来解决这个问题---但我从来没有做过)?

c++ - 为什么用逗号进行双重初始化是非法的?

我有三个代码片段。这个:1,7;//yes,that'sallthecode编译正常。这个:doubled=(1,7);也可以编译。然而这个:doubled=1,7;编译失败。gcc-4.3.4说error:expectedunqualified-idbeforenumericconstant和VisualC++10说errorC2059:syntaxerror:'constant'为什么会有这样的差异?为什么不是所有三个都使用编译,在所有三个中具有相同的效果? 最佳答案 在前两种情况下,语句使用C++的commaoperator在

c++ - C++中的for循环提前一步使用双重突破,未达到边界值

我在32位Ubuntu8.04上使用gcc4.2.4编译了一个简单的C++程序。它有一个for循环,其中一个double变量以一定的步长从零递增到1。当步长为0.1时,行为符合我的预期。但是当步长为“0.05”时,循环在0.95后退出。谁能告诉我为什么会这样?输出遵循下面的源代码。#includeusingnamespacestd;intmain(){doublerangeMin=0.0;doublerangeMax=1.0;doublestepSize=0.1;for(doubleindex=rangeMin;index输出sarva@savija-dev:~/code/scratc

c++ - 这是带有 shared_ptr 的正确 C++11 双重检查锁定版本吗?

这articleJeffPreshing指出双重检查锁定模式(DCLP)在C++11中得到修复。用于此模式的经典示例是单例模式,但我碰巧有一个不同的用例,而且我仍然缺乏处理“原子武器”的经验-也许这里有人可以帮助我。Jeff在"UsingC++11SequentiallyConsistentAtomics"下描述的以下代码是否是正确的DCLP实现??classFoo{std::shared_ptrdata;std::mutexmutex;voiddetach(){if(data.use_count()>1){std::lock_guardlock{mutex};if(data.use_

c++ - 获取 boost.log 记录器的严重性..?

假设我有一个简单的boost.logseverity_logger记录器设置如下:logging::core::get()->set_filter(logging::trivial::severity>=logging::trivial::debug);logging::add_common_attributes();src::severity_loggerlogger;我如何以编程方式检查严重性?IE。像logger.getSeverity()..?这样的东西我已经在StackOverflow上筛选了文档和其他问题,但就是找不到什么应该是一个简单的API调用......?

C++对具有多个元素的数据进行双重排序

我有多个包含以下信息的数据条目:身份证号姓名1日期名字2可以将其放入这样的结构中:structentry{intid_number;stringname1;intdate;stringname2;}在我的数据中,我有很多这样的条目,我想进行排序。首先,我想根据name1按字母顺序排序,然后按日期排序。然而,按日期排序是字母排序的一个子集,例如如果我有两个同名的条目1,那么我想按日期对这些条目进行排序。此外,当我排序时,我希望条目的元素保持在一起,所以所有四个值都放在一起。我的问题如下:1)我应该使用什么类型的数据结构来保存这些数据,以便在按其中任何一个进行排序时,我可以将四个元素的集合

c++ - 双重分派(dispatch)和模板类

我有一个C++代码,我在其中比较从一个公共(public)母类派生的不同类,Foo.如果两个类没有相同的类型,比较总是false.否则,它会比较特定于该类的一些内部数据。我的代码是这样的:classBar;classBaz;classFoo{public:virtualboolisSame(Foo*)=0;virtualboolisSameSpecific(Bar*){returnfalse;}virtualboolisSameSpecific(Baz*){returnfalse;}};classBar:publicFoo{public:boolisSame(Foo*foo){retu

当我应该获得双重时,为什么我会得到Nan?

我的问题在于定义first_x和second_x。当我打电话给quad_eq功能,我根据以下代码获得-NAN(IND)返回。如果我更改.pushback()方法参数为文字整数,我得到返回的整数而不是NAN。这使我相信问题是我的计算/定义first_x和second_x。也许我没有看到或理解的C++技巧。谁能看到我的问题是什么?(如果有帮助的话,我正在锻炼BjarneStroustrup的C++原理和使用C++练习,他给我std_lib_facilities.h文件,因为我还不了解标头)vectorquad_eq(doublea,doubleb,doublec){vectoranswers;do