小编Fal*_*nUA的帖子

C ++ 20:多种类型的概念及其约束,正确的语法?

可以肯定的是c++20,根据即将到来的标准,根据最近的科隆ISO C ++会议的一份Reddit报告,我们将能够指定模板的概念,并且对于每个类/功能模板,我们将能够设置其类型的约束。 。但是,在文档和教程中(例如here),我找不到适用于多类型用例的正确语法。


假设我们有一个多类型的概念:

template<typename T1, typename T2>
concept AreEqComparable = requires(T1 a, T2 b) {
    { a == b } -> bool;
};
Run Code Online (Sandbox Code Playgroud)

假设我想在两个不同类型之间定义一个简单的比较函数。我怎样才能做到这一点?更具体地说,我应该在???下面的代码部分中写什么:

???
bool are_equal(T1 a, T2 b) { return a == b; }
Run Code Online (Sandbox Code Playgroud)

我在这里这里,甚至这里都没有找到关于这个案例的参考。我已经随机尝试过类似的东西:

/* 1 */ template<AreEqComparable T1, T2>
/* 2 */ AreEqComparable<T1, T2>
/* 3 */ template<AreEqComparable<T1, T2>>
Run Code Online (Sandbox Code Playgroud)

但是所有这些都引发语法错误。我认为答案应该在Bjarne Stroustrup的规范 …

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

20
推荐指数
3
解决办法
1110
查看次数

给定一台可以对5个物体进行分类的机器.我们能以多快的速度排序其中的25个?

假设您有25个对象,并且可以按照您甚至不知道的某些条件对其中5个进行排序.使用这台机器的成本非常昂贵(一次发射需要1美元),那么分类所有物品的最低成本是多少?

我目前的解决方案非常简单(类似于合并排序的想法):

  1. 随机将它们分成5组,每组5个
  2. 对它们进行排序(+5次发布)
  3. 现在,对这五个组中的最小元素进行排序(+1启动)
  4. 现在我们拥有整套的最小元素.将其从它所属的组中删除,并重复步骤3,直到一般只留下5个未分类的对象(+19启动)
  5. 对其余5个对象进行排序(+1启动)

因此,一般来说,我们必须支付26美元(26次发射).

问题:有没有办法让它更便宜(以最少的发布次数排序)?

sorting algorithm

19
推荐指数
1
解决办法
913
查看次数

找到同构置换集的算法

我有一组排列,我想删除同构排列.

我们有多S组排列,其中每组包含K排列,每个排列表示为N元素和数组.我目前正在将其保存为数组int pset[S][K][N],其中S,K并且N是固定的,并且N大于K.

两组排列,A并且B,如果存在排列,则是同构的,P将元素转换AB(例如,if a是元素的集合A,然后P(a)是集合的元素B).在这种情况下,我们可以说P制造AB同构.

我目前的算法是:

  1. 我们选择所有对s1 = pset[i]s2 = pset[j],使得i < j
  2. 从choosen集(每个元素s1s2)从numered 1K.这意味着每个元素都可以表示为s1[i]s2[i],在哪里0 < i < K+1
  3. 对于每一个排列TK …

c c++ arrays algorithm permutation

16
推荐指数
2
解决办法
617
查看次数

如何以编程方式防止Linux计算机睡眠或打开屏幕保护程序?

在使用C++开发小型跨平台游戏时,我遇到了以下问题:当玩家在没有触摸键盘或鼠标的情况下玩USB游戏手柄时,计算机会在玩游戏时自动进入睡眠状态.

在Windows中,可以使用SetThreadExecutionState功能轻松完成.在OS X中,我认为它可以完成UpdateSystemActivity但尚未测试.

但问题是,在Linux中,没有像DE之类的通用API.我发现,在GNOME,你可以通过使用电话的DBus停止自动悬浮Inhibit()Uninhibit(),但它仅适用于侏儒.

那么,是否存在以编程方式交叉DE方式(或非DE方式,例如,如果用户使用类似dwm或类似的东西awesome wm)来阻止Linux系统(使用Xorg并且当然没有root访问权限)睡眠或打开屏幕保护程序更改用户配置文件?

PS:不要以为它太复杂了,但不知道有多么不幸.

c++ linux sleep screensaver xorg

14
推荐指数
2
解决办法
2007
查看次数

在 Tensorflow-lite 中输入具有动态尺寸的图像

我有一个 tensorflow 模型,它采用不同大小的输入图像:

inputs = layers.Input(shape=(128,None,1), name='x_input')

<tf.Tensor 'x_input:0' shape=(?, 128, ?, 1) dtype=float32>
Run Code Online (Sandbox Code Playgroud)

当我将此模型转换为 tensorflow-lite 时,它​​会抱怨:

converter = tf.lite.TFLiteConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert() 

ValueError: None is only supported in the 1st dimension.
Tensor 'x_input_1' has invalid shape '[None, 128, None, 1]'.
Run Code Online (Sandbox Code Playgroud)

我无法将图像缩放到固定大小。我看到的唯一解决方案是将图像填充到某个最大尺寸并在图表中使用该尺寸,但这似乎很浪费。有没有其他方法可以使 tensorflow-lite 与动态图像尺寸一起工作?这个限制有什么理由吗?谢谢。

python keras tensorflow tensorflow-lite

9
推荐指数
1
解决办法
6313
查看次数

C ++ 20:[[可能]],[[不太可能]]和__builtin_expect之间的区别?

初步信息:根据最近的ISO C ++委员会旅行报告,将在最新版本的GNU GCC中添加并提供条件分支的[[ likely ]][[ unlikely ]]属性C++20(您可以在在线编译器wandbox.org上使用它)。


问题:以下构造

if (cond) [[ likely ]] { ... }
Run Code Online (Sandbox Code Playgroud)

相当于以下一个?

if (__builtin_expect(bool(cond), 1)) { ... }
Run Code Online (Sandbox Code Playgroud)

为了有效使用它,不同编译器之间是否存在性能差异或实现细微差别?

c++ branch-prediction c++20

7
推荐指数
1
解决办法
187
查看次数

TF 2.0中的tf.GradientTape是否等效于tf.gradients?

我正在将训练循环迁移到Tensorflow 2.0 API。在紧急执行模式下,tf.GradientTape替换tf.gradients。问题是,它们具有相同的功能吗?特别:

  • 在功能上gradient()

    • 该参数与旧API中的output_gradients等效grad_ys吗?
    • 参数呢colocate_gradients_with_opsaggregation_methodgate_gradientstf.gradients?是否由于缺乏使用而弃用?可以使用2.0 API中的其他方法替换它们吗?急切执行中是否需要它们?
  • 功能jacobian()等效tf.python.ops.parallel_for.gradients吗?

python tensorflow tensorflow2.0

6
推荐指数
1
解决办法
485
查看次数

可视化 TFLite 图并获取特定节点的中间值?

我想知道是否有办法知道 tflite 中特定节点的输入和输出列表?我知道我可以获得输入/输出详细信息,但这不允许我重建Interpreter. 所以我要做的是:

interpreter = tf.lite.Interpreter(model_path=model_path)
interpreter.allocate_tensors()

input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
interpreter.get_tensor_details()
Run Code Online (Sandbox Code Playgroud)

最后 3 个命令基本上为我提供了似乎没有必要信息的字典。

所以我想知道是否有办法知道每个节点的输出去哪里?当然Interpreter以某种方式知道这一点。我们可以吗?谢谢。

python keras tensorflow tensorflow-lite tensorflow2.0

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

如何防止Google Colab断开连接?

有什么方法可以以编程方式防止Google Colab在超时时断开连接?

下面介绍导致笔记本计算机自动断开连接的情况:

Google Colab笔记本的空闲超时为90分钟,绝对超时为12小时。这意味着,如果用户超过90分钟未与其Google Colab笔记本进行交互,则其实例将自动终止。另外,Colab实例的最大生命周期为12小时。

自然,我们希望自动将最大值从实例中挤出,而不必不断地手动与之交互。在这里,我将假定常见的系统要求:

  • Ubuntu 18 LTS / Windows 10 / Mac操作系统
  • 对于基于Linux的系统,请使用流行的DE,例如Gnome 3或Unity
  • 火狐浏览器

我要在此指出,这种行为不会违反 Google Colab的使用条款,尽管根据其常见问题解答(我们的常见问题),我们不鼓励这样做(简而言之:从道德上讲,如果您真的不需要用尽所有GPU,就不行了) )。

我当前的解决方案非常愚蠢:

  • 首先,我关闭屏幕保护程序,因此我的屏幕始终保持打开状态。
  • 我有一个Arduino开发板,所以我只是将它变成了一个橡胶鸭子USB,并使其在我睡觉时模仿原始用户交互(只是因为我手头有其他用例)。

有更好的方法吗?

python linux jupyter-notebook google-colaboratory

5
推荐指数
18
解决办法
3180
查看次数

为什么聊天应用程序必须是异步的?

我需要为我的Web服务实现一个聊天应用程序(用Django + Rest api框架编写).在做了一些谷歌搜索之后,我发现可用的Django聊天应用程序都已弃用,不再受支持了.我找到的所有DIY(自己动手)解决方案都使用TornadoTwisted框架.

所以,我的问题是:是否可以制作基于Django的同步聊天应用程序?我需要使用任何异步框架吗?我在后端编程方面经验很少,所以我希望尽可能简单.

python django chat tornado

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