草庐IT

maths_operator

全部标签

c++ - [expr.unary.op]/9 似乎暗示 `operator !()` 不能应用于下面的类型 A。但编译器不同意这一点

[conv]/4:CertainlanguageconstructsrequirethatanexpressionbeconvertedtoaBooleanvalue.Anexpressioneappearinginsuchacontextissaidtobecontextuallyconvertedtoboolandiswell-formedifandonlyifthedeclarationboolt(e);iswell-formed,forsomeinventedtemporaryvariablet(11.6).现在考虑下面的片段。它不编译,也不在clang中,GCC或VS.str

c++ - 多维数组 : operator overloading

我有一个包含多维数组的类:可以用这个类创建一维、二维、……、n维数组如果数组有n维,我想使用noperator[]来获取一个对象:例子:Aa({2,2,2,2}];a[0][1][1][0]=5;但数组不是指向其他vector等的指针vector...所以我希望operator[]返回一个类对象直到最后一个维度,然后返回一个整数这是一个大大简化的代码,但它显示了我的问题:我收到的错误:[Error]cannotconvert'A::B'to'int'ininitialization"#include//nullptr_t,ptrdiff_t,size_t#include//cin,co

c++ - 我真的需要为 friend operator<< 为命名空间中的类竭尽全力吗?

我想实现一个运算符Paragraph)。类Paragraph有一些私有(private)数据,因此我希望(独立的)operatorhereonSO.friend语句,执行operator一切都很好。但现在我想将Paragraph放在命名空间中,比如说namespacefoo.它不再有效!如果我写:namespacefoo{classParagraph{public:explicitParagraph(std::stringconst&init):m_para(init){}std::stringconst&to_str()const{returnm_para;}private:frie

c# - 带有负参数的 Math.Round

全部,我正在尝试将BorlandC++代码转换为C#。在旧代码中,我看到以下内容:doublea=RoundTo(b,-2);查看Borland文档,我发现RoundTo()接受正负参数以确保精度。正数表示舍入到10^n,负数表示舍入到10^-n。查看Math.RoundTo()的C#文档,我找不到关于它是否会接受负数以确保精度的引用。所有样本均以正数呈现。在这种情况下,转换代码的正确方法是什么?我应该忘记这个标志并写下:doublea=Math.Round(b,2);谢谢。 最佳答案 我不知道针对您要执行的舍入类型的内置解决方案,

c++ - 使用 myclass::operator<(myclass &other) 对 std::list<myclass*> 进行排序

我有一个std::list在我的课上我有myclass::operator定义。我使用std::list.sort()功能,但它不会更改该列表中的任何内容。也许它只是对指针进行排序?如何对列表中的实际项目进行排序? 最佳答案 您正在对指针值进行排序,而不是对myclass值进行排序。您必须编写自己的谓词以通过取消引用来比较指针:templateboolPComp(constT*const&a,constT*const&b){return*amyvec;std::listmylist;std::sort(myvec.begin(),m

c++ - operator void* () 是什么意思?

我用谷歌搜索,但没有找到明确的答案。示例:classFoo{public:operatorvoid*(){returnptr;}private:void*ptr;};我了解什么是void*operator()。上面的运算符在不同的语法中是同一件事吗?如果不是,那是什么?我如何使用该运算符获取ptr? 最佳答案 不,他们是两个不同的运营商。operatorvoid*函数是一个类型转换函数,而operator()是一个函数调用运算符。当您想将Foo的实例转换为void*时使用第一个,例如Foofoo;void*ptr=foo;//The

c++ - 为什么math.h中没有clamp函数

math.h麻烦地提供了min和max,但没有提供clamp函数。我本以为,由于它们在实现方面通常都是相似的,因此它们都会出现在同一个库中。math.h没有钳制函数|宏有什么特别的原因吗?是math.h的创建者认为没有必要,还是他们根本没有考虑过?编辑:人们似乎忽略了这里的重点。我不是问他们为什么不添加clamp因为我很懒而且不喜欢写一个新的clamp-恰恰相反,我几乎从不使用它(尽管不可否认我使用它比我使用一些标准库)。我要问的是“有谁知道为什么C++标准化机构或创建者或任何人选择不在math.h中包含钳位函数的任何原因?”。我绝不是提示它不在math.h中,我只是想问“它不存在有充

c++ - clang vs gcc - 优化包括 operator new

我有一个我正在测试的简单示例,我注意到当涉及operatornew时,gcc优化(-O3)似乎不如clang优化。我想知道可能是什么问题,是否可以强制gcc以某种方式生成更优化的代码?templateT*create(){returnnewT();}intmain(){autoresult=0;for(autoi=0;i()!=nullptr);}returnresult;}#clang3.6++-O3-s--std=c++11test.cpp#sizea.outtextdatabssdechexfilename13246168194879ca.out#time./a.outreal0

c++ - 如何为指向类的指针重载 operator==() ?

我有一个名为AString的类。这是非常基本的:classAString{public:AString(constchar*pSetString=NULL);~AString();booloperator==(constAString&pSetString);...protected:char*pData;intiDataSize;}现在我想写这样的代码:AString*myString=newAString("foo");if(myString=="bar"){/*andsoon...*/}但是现有的比较运算符只支持if(*myString=="bar")如果我省略那个星号,编译器会

【Flink实战】玩转Flink里面核心的Sink Operator实战

🚀作者:“大数据小禅”🚀文章简介:玩转Flink里面核心的SinkOperator实战🚀欢迎小伙伴们点赞👍、收藏⭐、留言💬目录导航FlinkSinkOperator简介Flink核心知识SinkOperator速览Flink自定义的Sink连接Mysql存储商品订单案例实战FlinkSinkOperator简介在Flink中,SinkOperator(也称为SinkFunction或Sink)是指负责将DataStream或DataSet的数据发送到外部存储或外部系统的操作符。SinkOperator是Flink的数据输出端,它的作用是将处理过的数据写入目标位置,如数据库、文件系统、消息队列等