草庐IT

算术题

全部标签

c++ - union UB的非事件成员的指针算术?

让我们考虑这个示例代码:structsso{union{struct{char*ptr;charsize_r[8];}large_str;charshort_str[16];};constchar*get_tag_ptr()const{returnshort_str+15;}};在[basic.expr]指定只要结果指向数组的另一个元素(或超过对象或最后一个元素的末尾),就允许指针算术。然而,如果数组是union的非事件成员会发生什么,在此设置中没有指定。我相信这不是问题short_str+15永远不是UB。对吗?Thefollowingquestion清楚地表明了我的意图

c++ - 迭代器算术

在c++STL中,如果我有一个迭代器it到一个vectorv中,那么it-v.begin()是否保证给出我将索引放入vector中,以便*it==v[it-v.begin()]?如果是这样,对于所有随机访问迭代器都是这样吗? 最佳答案 是的,是的,并且对于所有RA迭代器都是如此。 关于c++-迭代器算术,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11280653/

c++ - 重载算术中的 move 语义和传递右值引用

我正在用C++编写一个小型数值分析库。我一直在尝试使用包括move语义在内的最新C++11特性来实现。我理解以下帖子中的讨论和最佳答案:C++11rvaluesandmovesemanticsconfusion(returnstatement),但有一种情况我仍在尝试解决。我有一个类,叫它T,它完全配备了重载运算符。我也有复制和move构造函数。T(constT&){/*initializationviacopy*/;}T(T&&){/*initializationviamove*/;}我的客户端代码大量使用运算符,因此我试图确保复杂的算术表达式从move语义中获得最大yield。考虑

c++ - C++/Haskell 中的精确算术和惰性列表性能

在阅读thispaper后,我最近遇到了精确实数运算这一主题。和thispaper.我找到了许多讨论使用有符号数字流实现精确算术的论文。对任意精度使用无限流可以在函数式语言(如Haskell)中使用惰性列表实现很好的实际实现。但是,讨论函数式语言中此类实现的论文似乎得出的结论是性能非常差。现在,我意识到与标准浮点表示相比,精确的非硬件实现通常具有相对较差的性能,但我有兴趣以命令式语言(特别是C++)和运算/函数的集合(算术运算、三角函数、exp、log等)。我的问题:有符号数字/惰性流表示是否存在固有的缓慢导致性能不佳的问题,还是Haskell?是什么让它变慢?是否有可能在C++中使用

c++ - 如何在 C++ 中使用简单的递归下降解析器解析基本算术(例如 "5+5")?

这件事在我的脑海里已经有一段时间了。我对递归下降解析器很感兴趣,并且想知道如何实现它。我想要的是一个简单的解析器,它可以理解简单的算术,例如“5+5”或“(5+5)*3”。我认为第一步是编写一个“tokenizer”,它将整个输入字符串分解为许多子字符串。这部分我已经完成(我什至不得不询问它here。如果你不想的话,你不必点击链接,因为我也在此处发布相关代码。)我的这个标记器,我最终得到一个string或标记的vector。现在,困难的部分:我想解析这些标记。我已阅读Wikipediaarticleonrecursivedescentparsers.我确实了解整体概念,但与往常一样,实

c++ - 验证 C/C++ 有符号右移是否是特定编译器的算术?

根据C/C++标准(seethislink),C和C++中的>>运算符不一定是有符号数的算术移位。当位向右移动时,是否移入0(逻辑)或符号位(算术)取决于编译器实现。对于为有符号整数实现逻辑右移的编译器,此代码是否会在编译时执行断言(失败)?#defineCOMPILE_TIME_ASSERT(EXP)\typedefintCompileTimeAssertType##__LINE__[(EXP)?1:-1]#defineRIGHT_SHIFT_IS_ARITHMETIC\((((signedint)-1)>>1)==((signedint)-1))//SHRmustbearithme

c++ - 优化算术编码器

我正在优化名为PackJPG的C++库的编码步骤。我用IntelVTune分析了代码,发现当前的瓶颈是PackJPG使用的算术编码器中的以下函数:voidaricoder::encode(symbol*s){//updatesteps,lowcount,highcountunsignedintdelta_plus_one=((chigh-clow)+1);cstep=delta_plus_one/s->scale;chigh=clow+(cstep*s->high_count)-1;clow=clow+(cstep*s->low_count);//e3scalingisperforme

node.js - 用于算术运算的 MongoDB 聚合 - 子文档字段

我们有一个聚合查询转换几个子文档。我们想对这些投影值应用一些算术运算,例如Sum和Product。聚合查询--Item.aggregate([{$unwind:'$dummy'},{$match:{'dummy.storage':{$gt:0}}},{$group:{_id:'$_id',dummy:{$push:'$dummy'},original_y:{$first:"$original_y"},new_y:{$first:"$new_y"},}},{$project:{original_y:1,new_y:1,tallyAmount:{$sum:["$new_y","$origi

node.js - 用于算术运算的 MongoDB 聚合 - 子文档字段

我们有一个聚合查询转换几个子文档。我们想对这些投影值应用一些算术运算,例如Sum和Product。聚合查询--Item.aggregate([{$unwind:'$dummy'},{$match:{'dummy.storage':{$gt:0}}},{$group:{_id:'$_id',dummy:{$push:'$dummy'},original_y:{$first:"$original_y"},new_y:{$first:"$new_y"},}},{$project:{original_y:1,new_y:1,tallyAmount:{$sum:["$new_y","$origi

python - 使用算术运算符将 None 与内置类型进行比较?

Python2.7.2(default,Jun122011,14:24:46)[MSCv.150064bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>None>0False>>>None==0False>>>None是否使用为内置类型(在本例中为整数)明确定义的算术运算符比较None?是语言规范(Python的规范-你一定是在开玩笑:))的前两个和第三个比较部分之间的区别还是CPython的实现细节? 最佳答案 您可