小编Sil*_*cer的帖子

为每个C++类模板实例执行一次代码

好的,这是一个复杂的问题.

我有一个多次实例化的C++类模板.对于这些实例中的每一个,我都需要执行一个注册一些运算符的函数.这需要该模板实例中使用的第一目标(这并不意味着它必须在执行前每个模板实例只需进行一次 instanciation这在编译时有发生).

最新的我手动完成了这个.但这是一种痛苦.所以我想自动执行注册功能.

我目前的想法是在构造函数中调用一个受保护的注册方法.然而,每当构造一个类的实例时,这需要(小的)开销.由于这种情况经常发生,我想避免这种开销.

我还尝试使用静态RAII帮助程序成员,但如果没有主动访问静态模板类成员,则不会构造静态模板类成员,因此尝试失败.

有没有办法在类模板instanciation上执行代码(通过函数或可能由RAII帮助程序类)而没有运行时开销?

c++ templates class-template c++11

5
推荐指数
1
解决办法
1236
查看次数

将C或C99中的结构数组初始化为所有相同的值

让我们在C或C99中假设以下内容:

typedef struct
{
   int x;
   double y;
} MY_S;

MY_S a[666] = {333, 666.6};
Run Code Online (Sandbox Code Playgroud)

这是否仅初始化数组的第一个对象?如果是,是否有一种方法可以使用该语法将数组的所有元素初始化为所有相同的值(无需调用函数/循环,而无需重复初始化程序)?

c arrays struct initialization c99

5
推荐指数
2
解决办法
2719
查看次数

检查 CRC 多项式的错误检测能力

我试图找出如何计算任意 CRC 多项式的错误检测能力。

我知道有各种错误检测功能可能(或可能不)适用于任意多项式:

  1. 检测单个位错误:所有 CRC 都可以执行此操作,因为这仅需要 CRC 宽度 >= 1。

  2. 突发错误检测:所有 CRC 都可以检测大小等于其宽度的突发错误。

  3. 检测奇数位错误:CRC 与多项式的偶数项(这意味着完整二进制多项式中 1 位的偶数)可以做到这一点。

  4. 检测随机位错误(取决于帧大小):我有一个现成的 C 算法,可以计算给定 HD 和多项式的最大帧大小。我没有完全理解它,但它有效。

让我们假设一个 16 位 CRC 多项式 x¹?+x¹²+x?+1 = 0x11021。该多项式可以:

  • 检测所有单位错误(与数据大小无关)。
  • 检测所有高达 16 位宽度的突发错误(与数据大小无关)。
  • 检测所有奇数个误码(因为它有 4 个多项式;与数据大小无关)。
  • 检测高达 32571 位数据大小的 3 位错误 (HD4)。

以上正确吗?

是否有额外的 CRC 错误检测功能?如果是,我如何检查(没有深入的数学知识)任意 CRC 多项式是否支持它们?

checksum crc error-detection hamming-distance polynomials

5
推荐指数
1
解决办法
9116
查看次数

C++20 中概念约束函数的排序规则是什么?

我刚刚了解到 C++ 概念比 SFINAE 优越得多,因为受概念约束的函数是有序的,这意味着受约束的函数被认为比受约束的函数更好。

编译器用于估计函数受约束程度的规则究竟如何?当混合非限制性和限制性重载时,这些规则如何与传统的重载决议相互作用?

c++ templates overloading c++-concepts c++20

5
推荐指数
1
解决办法
192
查看次数

PHP使用私有方法作为回调

我是第一次尝试PHP + WP。我打算使用WP插件挂钩。作为C ++程序员,我还打算将所有代码放入类中。目前,我有点受以下应该安装WP插件挂钩的代码段的困扰:

   class SettingsHandler
   {
      public function __construct()
      {
         add_filter('plugin_action_links', array($this, 'AddSettingsLink'), 10, 2);
      }

      private function AddSettingsLink($links, $file)
      {
         if ($file==plugin_basename(__FILE__))
         {
            $settings_link = '<a href="options-general.php?page=options_page">Settings</a>';
            array_unshift($links, $settings_link);
         }       
         return $links;
      }
   }

   $settingsHandler = new SettingsHandler();
Run Code Online (Sandbox Code Playgroud)

这给我一个错误消息:警告:call_user_func_array()期望参数1是有效的回调,无法访问E:\ xampp \ apps \ wordpress \ htdocs \ wp-includes \ plugin.php中的私有方法SettingsHandler :: AddSettingsLink() 199行

当我将回调切换为public时,错误消失了。似乎我不能使用私有方法作为PHP / WP中的回调。这将是非常糟糕的,因为它揭示了许多不应被其他任何人直接访问的回调方法。我可以将此类回调设为私有吗?

我还发现了以下运行良好的代码段:

   class a
   {
      public function __construct()
      {
         $str = " test test ";
         $result = preg_replace_callback('/test/', array($this, 'callback'), $str);
         echo $result; …
Run Code Online (Sandbox Code Playgroud)

php wordpress private callback wordpress-plugin

4
推荐指数
1
解决办法
3186
查看次数

moveToThread()是否重写与排队连接的直接连接?

将对象从一个线程移动到另一个线程时,moveToThread()是否会自动重写现有的直接连接到排队连接?

或者换句话说:在调用moveToThread()之前或之后建立自动连接是否重要?

不幸的是,文档和WWW都没有回答这个问题.

qt multithreading qobject

4
推荐指数
1
解决办法
221
查看次数

优化:Hackerearth Postman 软件工程师实习问题

你想买一台笔记本电脑。每台笔记本电脑都有两个参数:评级和价格。您的任务是在给定的价格范围内购买评分最高的笔记本电脑。给定 Q 任务,每个查询都包含所需的价格范围,您必须打印在该价格范围内可以购买的最高评价的笔记本电脑。

输入格式:

第一行包含 N 表示输入的数量。

以下 N 行包含 P&R,表示笔记本电脑的价格和范围。

下一行包含 Q,表示查询的数量。

以下 Q 行包含两个整数 X 和 Y,表示价格范围(含)。

输出格式:

对于每个任务 Q,打印范围内可以购买的最高评分。

如果在范围内找不到任何笔记本电脑,请打印 -1。

约束:

1 <= N,Q <= 10^6

0 <= R,P <= 10^9

1 <= X <= Y <= 10^9

时间限制:每个输入 6 秒

样本输入:

5
1000 300
1100 400
1300 200
1700 500
2000 600
3
1000 1400
1700 1900
0 2000
Run Code Online (Sandbox Code Playgroud)

示例输出:

400
500
600
Run Code Online (Sandbox Code Playgroud)

我的方法

  1. 构建(键,值)映射

  2. 而 Y--> X 做,

    迭代器 = map.find(Y)

    如果是迭代器,则 max_rating = …

c++ algorithm optimization dictionary

4
推荐指数
1
解决办法
2313
查看次数

将约束应用于模板的三种方式有什么区别?

我刚刚了解到 C++20 提供了三种将约束应用于模板的方法:

  • 需要条款
  • 尾随需要条款
  • 约束模板参数

我成功地使用了受约束的模板参数,而且我更喜欢这种语法。我仍然想知道为什么标准中定义了三种方式。

是否存在根本的技术差异?这些风味是否有独特的优点或缺点(除了语法外观)?

c++ c++-concepts c++20

4
推荐指数
1
解决办法
85
查看次数

自 Volta 以来的独立线程调度

自 Volta 以来,Nvidia 为其 GPGPU 引入了新的独立线程调度。如果 CUDA 线程出现分歧,替代代码路径不会按块执行,而是按指令执行。尽管如此,由于 GPU 也是 SIMT,因此不同的路径无法同时执行。这是这篇文章的原文:

https://developer.nvidia.com/blog/inside-volta/(向下滚动到“独立线程调度”)。

我明白这意味着什么。我不明白的是,这种新行为以何种方式加速代码。即使上面文章中的前后图也没有反映出整体加速。

我的问题:由于所描述的新调度,哪种不同的算法在 Volta(和更新的)上运行得更快?

multithreading cuda gpgpu scheduling nvidia

4
推荐指数
1
解决办法
1581
查看次数

选择Qt文本文件写入的自定义行结尾

在Qt中编写文本文件(使用QFile和QTextStream)时,任何\nendl自动转换为正确的平台特定行结束(例如,\r\n对于Windows).

我想让用户选择使用哪个文件结尾.

有没有办法在不使用二进制文件模式的情况下设置以Qt结尾的所需行?

c++ qt line-endings eol

3
推荐指数
1
解决办法
613
查看次数