C/C++开发

模块化算法和 NTT(有限域 DFT)优化

我想使用 NTT 进行快速平方(请参阅快速 bignum 平方计算),但即使对于非常大的数字……超过 12000 位. 所以我的问题是: 有没有办法优化我的 NTT 转换?我并不是要通过并行(线程)来加速它;这只是低级层. 有没有办法加快我的模块化算术的速度? 这是我在 C++ 中为 NTT 编写的(已经优化的)源代码(它是完整的并且 100% 在 C++ 中工作,不需要第三方 ..
发布时间:2021-12-01 15:49:06 C/C++开发

初始化是否需要左值到右值的转换?是`int x = x;` UB 吗?

C++ 标准在 3.3.2“声明点"中包含一个半著名的“令人惊讶"名称查找示例: int x = x; 这用自身初始化 x,它(作为原始类型)未初始化,因此具有不确定的值(假设它是一个自动变量). 这实际上是未定义的行为吗? 根据4.1“左值到右值转换",对未初始化的值执行左值到右值转换是未定义的行为.右手边的 x 是否进行了这种转换?如果是这样,该示例实际上是否会有未定义的行为? ..
发布时间:2021-12-01 15:48:42 C/C++开发

std::vector::resize() 与 std::vector::reserve()

这篇文章的评论部分有一个关于使用 std::vector::reserve 的帖子() vs. std::vector::resize(). 这是原始代码: void MyClass::my_method(){my_member.reserve(n_dim);for(int k = 0 ; k 我认为要在vector中写入元素,正确的做法是调用std::vector::resize() ..
发布时间:2021-12-01 15:48:32 C/C++开发

你如何在 C++ 中序列化一个对象?

我有一个小的对象层次结构,我需要通过套接字连接序列化和传输这些对象.我需要序列化对象,然后根据它的类型反序列化它.在 C++ 中有没有一种简单的方法可以做到这一点(就像在 Java 中一样)? 是否有 C++ 序列化在线代码示例或教程? 编辑: 明确地说,我正在寻找将对象转换为字节数组,然后再转换回对象的方法.我可以处理套接字传输. 解决方案 谈序列化,boost 序列化 AP ..
发布时间:2021-12-01 15:48:11 C/C++开发

C++11 中 COW std::string 实现的合法性

据我所知,写时复制不是在 C++11 中实现符合标准的 std::string 的可行方法,但是当它最近在讨论中出现时,我发现我自己无法直接支持这种说法. C++11 不承认基于 COW 的 std::string 实现,我是否正确? 如果是,这个限制是否在新标准(where)的某处明确说明? 或者这个限制是隐含的,从某种意义上说,这是对 std::string 的新要求的综合影 ..
发布时间:2021-12-01 15:48:03 C/C++开发

在这种特定情况下,使用成员初始值设定项列表和在构造函数中赋值之间有区别吗?

内部和关于生成的代码,是否真的有区别: MyClass::MyClass(): _capacity(15), _data(NULL), _len(0){} 和 MyClass::MyClass(){_容量=15;_数据=空;_len=0} 谢谢... 解决方案 假设这些值是原始类型,那么不,没有区别.初始化列表仅在您将对象作为成员时才起作用,因为初始化列表让您将对象初始化为其最终值 ..
发布时间:2021-12-01 15:47:52 C/C++开发

什么是访问说明符?我应该继承私有的、受保护的还是公共的?

我对访问修饰符在继承方面的含义感到困惑.涉及 private、protected 和 public 关键字的继承之间有什么区别? 解决方案 什么是访问说明符? C++ 中的类/结构/联合有 3 个访问说明符.这些访问说明符定义了如何访问类的成员.当然,一个类的任何成员都可以在该类中访问(在同一个类的任何成员函数中).继续讨论访问说明符的类型,它们是: Public - 声明为 ..
发布时间:2021-12-01 15:47:21 C/C++开发

将 Python 程序转换为 C/C++ 代码?

是否可以将 Python 程序转换为 C/C++? 我需要实现几个算法,我不确定性能差距是否足以证明我在 C/C++ 中执行它时所经历的所有痛苦(我不擅长)).我想写一个简单的算法,并根据这样一个转换后的解决方案对其进行基准测试.如果仅此一项就比 Python 版本快得多,那么我将别无选择,只能用 C/C++ 来实现. 解决方案 是的.查看 Cython.它就是这样做的:将 Pyth ..
发布时间:2021-12-01 15:47:13 C/C++开发

extern inline 有什么作用?

我了解 inline 本身是对编译器的建议,它可以自行决定是否内联函数,并且还会生成可链接的目标代码. 我认为 static inline 做同样的事情(可能会也可能不会内联),但在内联时不会产生可链接的目标代码(因为没有其他模块可以链接到它). extern inline 在哪里适合图片? 假设我想用内联函数替换预处理器宏并要求该函数被内联(例如,因为它使用了 __FILE__ ..
发布时间:2021-12-01 15:47:01 C/C++开发

在 C++ 中测量函数的执行时间

我想了解某个函数在我的 C++ 程序中在 Linux 上执行所需的时间.之后,我想做一个速度比较.我看到了几个时间函数,但最终从 boost 得到了这个.时间: process_user_cpu_clock,捕获当前进程花费的用户-CPU时间 现在,我不清楚是否使用上述功能,我是否会获得 CPU 在该功能上花费的唯一时间? 其次,我找不到任何使用上述功能的示例.任何人都可以帮助我如何使用 ..
发布时间:2021-12-01 15:46:54 C/C++开发

如何将cin和cout重定向到文件?

如何将 cin 重定向到 in.txt 并将 cout 重定向到 out.txt? 解决方案 这是您想要执行的操作的示例.阅读注释以了解代码中每一行的作用.我已经在我的电脑上用 gcc 4.6.1 测试过它;它工作正常. #include #include #include 无效 f(){std::string 行;while(std::getline(std::cin ..
发布时间:2021-12-01 15:46:43 C/C++开发

什么时候应该在 C++ 中使用“朋友"?

我一直在阅读 C++ FAQ 并且对 friend 声明.我个人从未使用过它,但我对探索该语言很感兴趣. 使用 friend 的好例子是什么? 阅读 FAQ 多一点我喜欢 > 运算符重载和添加为这些类的朋友的想法.但是我不确定这不会破坏封装.这些异常什么时候才能保持在 OOP 的严格范围内? 解决方案 首先 (IMO) 不要听那些说 friend 没有用的人.它是有益的 ..
发布时间:2021-12-01 15:46:34 C/C++开发

如何使用 Code::Blocks 链接到库?

C++ GUI 教程:对 TextOut 的未定义引用 我有同样的问题,但我是编程和 Code::Blocks 的新手,我想使用 GDI32 库.我该如何安装它?我很困惑,因为我可以使用 windows.h 标头,但是诸如 TextOut 之类的某些功能不可用. 解决方案 gdi32 库已经安装在您的计算机上,没有它,很少有程序可以运行.您的编译器(如果安装正确)通常会附带一个导入库 ..
发布时间:2021-12-01 15:46:25 C/C++开发

为什么模数除法 (%) 仅适用于整数?

我最近遇到了一个问题 可以使用模数除法轻松解决,但输入是浮点数: 给定一个周期函数(例如sin)和一个只能在周期范围内计算它的计算机函数(例如[-π, π]),制作一个可以处理任何输入的函数. “明显"的解决方案类似于: #include 浮动罪(浮动 x){返回limited_sin((x + M_PI) % (2 *M_PI) - M_PI);} 为什么这不起作用?我收到此错误 ..
发布时间:2021-12-01 15:46:07 C/C++开发

C++ 中的 int 和 long 有什么区别?

如果我错了,请纠正我, int 是 4 个字节,取值范围从 -2,147,483,648 到 2,147,483,647 (2^31) long 是 4 个字节,取值范围从 -2,147,483,648 到 2,147,483,647 (2^31) C++ 有什么不同?它们可以互换使用吗? 解决方案 它依赖于实现. 例如,在 Windows 下它们是相同的,但例如在 A ..
发布时间:2021-12-01 15:45:47 C/C++开发

设置的最低有效位的位置

我正在寻找一种有效的方法来确定设置在整数中的最低有效位的位置,例如对于 0x0FF0,它将是 4. 一个简单的实现是这样的: unsigned GetLowestBitPos(无符号值){断言(值!= 0);//单独处理无符号位置 = 0;while (!(value & 1)){值>>=1;++位置;}返回位置;} 任何想法如何从中挤出一些周期? (注意:这个问题是针对喜欢这种东 ..
发布时间:2021-12-01 15:45:23 C/C++开发