问题列表 - 第318104页

require 子句中的表达式无效

require 子句中的表达式是否b<[]{ return true; }()>符合 C++20 标准?由于某种原因,GCC 拒绝它并认为它是表达式错误,而 MSVC 和 Clang 接受它。

template<bool B>
inline constexpr bool b = B;
static_assert(requires { b<[]{ return true; }()>; });
Run Code Online (Sandbox Code Playgroud)

演示


GCC的错误信息:

<source>:3:15: error: static assertion failed
    3 | static_assert(requires { b<[]{ return true; }()>; });
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:3:15: note: constraints not satisfied
<source>:3:26: note: the required expression 'b<<expression error> >' is invalid,
because
    3 | static_assert(requires { b<[]{ return true; }()>; });
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++20

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

计算两个浮点数之间的距离是否对称?

对于Java程序,我编写了一个方法来计算两个浮点数之间的距离。该方法对于输入顺序对称地工作是非常重要的。目前我正在使用的方法:

double distanceBetween(double a, double b) {
    return Math.abs(a - b);  // I assume that a-b = -(b-a)
}
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否总是对称的,或者我是否应该将代码更改为:

double distanceBetween(double a, double b) {
    if (a > b) return a - b;
    else return b - a;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是

Math.abs(a - b) == Math.abs(b - a)
Run Code Online (Sandbox Code Playgroud)

保证 a 和 b 的所有值始终为真?或者在某些情况下(由于使用浮点数学)结果是否可能不完全相同

java floating-point distance

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

为什么 is_convertible&lt;EnumClass, int&gt; 返回 false?

我不明白为什么std::is_convertible_v<EnumClass, int>在这个例子中返回 false,特别是考虑到它static_cast<int>(enumClassValue)工作正常。

#include <iostream>

enum Enum {X = 5};
enum class EnumClass {X = 5};

int main() {
    Enum enumValue = Enum::X;
    std::cout << static_cast<int>(enumValue) << std::endl;
    std::cout << std::is_convertible_v<Enum, int> << std::endl;

    EnumClass enumClassValue = EnumClass::X;
    std::cout << static_cast<int>(enumClassValue) << std::endl;
    std::cout << std::is_convertible_v<EnumClass, int> << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ enums type-traits

2
推荐指数
1
解决办法
82
查看次数

为地图/矢量等实现不可复制不可移动包装器

我想在没有复制或移动构造函数的 STL 容器(如地图、向量、无序地图等)上编写一个包装器。我能想到一些方法,但没有一个是好的:

方法一:使用模板:

// Define a template NoCopyMove which can be instantiated with STL container types.
template <typename V>
struct NoCopyMove {
 public:
  using value_type = V;
  value_type& get() { return val_; }

  template <typename... Args>
  NoCopyMove(Args&&... args): val_(std::forward<Args>(args)...) {}

 private:
  NoCopyMove(const NoCopyMove&) = delete;
  NoCopyMove(NoCopyMove&&) = delete;
  value_type val_;
};

Run Code Online (Sandbox Code Playgroud)

上面可以用任何STL容器实例化,然后可以使用get()函数访问该容器

方法 2:使用公共继承:

template <typename Key,
          typename T,
          typename Hash = std::hash<Key>,
          typename KeyEqual = std::equal_to<Key>,
          class Allocator = std::allocator<std::pair<const Key, T>>>
class unordered_map_ncm …
Run Code Online (Sandbox Code Playgroud)

c++ generics templates stl c++14

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

C++ 协程和 const 引用参数

来自注释3https://eel.is/c++draft/dcl.fct.def.coroutine#13中的

\n
\n

[注3:\xe2\x80\x82如果协程具有通过引用传递的参数,则在该参数引用的实体的生命周期结束后恢复协程可能会导致未定义的行为。\xe2\x80\x94 尾注]

\n
\n

很明显,如果粗心的调用者不能确保提供的参数比协程对象寿命更长,那么在协程中通过引用获取参数可能会导致未定义的行为。

\n

但是用临时变量初始化的 const 引用参数又如何呢?如果标准保证参数的生命周期由本地引用延长,这对我来说是有意义的,但我找不到任何相关信息。

\n

这是定义的行为吗(假设 coro() 在第一次暂停后使用 obj ),如果是,它是什么?

\n
task<void> coro(const Obj& obj);\n\n...\n\nauto tsk = coro(Obj{});\nco_await tsk;\n
Run Code Online (Sandbox Code Playgroud)\n

在我看来,如果不允许这样做,则 const 引用根本不能用作协程参数,因为有人传递临时值并假设普通函数行为的风险。

\n

c++ temporary-objects c++20 c++-coroutine

2
推荐指数
1
解决办法
121
查看次数

Chrome 扩展程序可绕过空闲注销

一些银行和金融网站在认为您空闲时会自动注销。有没有办法让我在页面中注入一个脚本来假装我不闲着?

试过这个:setInterval(() => document.body.click(), 1000 * 60 * 5) // Click every 5 minutes

但它不起作用,我仍然注销了:

在此输入图像描述

再次强调,这并非出于任何恶意目的 - 我通过在一个显示器中保持股票头寸屏幕打开,同时在另一台显示器上工作来监控我在 Fidelity 上的股票头寸,但 Fidelity 不断显示闲置警告并每 30 次将我注销分钟。

请注意,在这种特殊情况下,该站点还监听clicktouchstart和事件:keydownscrolldocument.visibilityState

在此输入图像描述

一些注意事项:

  1. 我不能简单地每 x 分钟刷新一次页面,因为页面有一些 UI 状态(例如我在表中位置的排序顺序)会丢失

  2. 我尝试了一个愚蠢的pyautogui脚本,可以移动鼠标并单击页面,并且有效!那么为什么我不能在 chrome 中执行此操作呢?

javascript google-chrome google-chrome-extension idle-timer

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

根据现有数据在数据框中创建多个新行

假设我有以下数据集:

data.frame(country = c("A", "A", "B", "B", "C", "C"),
           type = c("x", "z", "x", "z", "x", "z"),
           value = c(4, 2, 6, 10, 54, 10))
Run Code Online (Sandbox Code Playgroud)
  country type value
1       A    x     4
2       A    z     2
3       B    x     6
4       B    z    10
5       C    x    54
6       C    z    10
Run Code Online (Sandbox Code Playgroud)

我想要做的是为每个国家/地区(A、B、C)创建多个新行,其中包含一个名为“zx”的新类型和一个新值,该新值是值 z 和 x 之间的差值。我正在寻找这个输出:

data.frame(country = c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
           type = c("x", "z", "z-x", "x", "z", "z-x", "x", "z", "z-x"),
           value …
Run Code Online (Sandbox Code Playgroud)

row r

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

C中的多级继承

我想在C中实现多级继承,其中基类作为指针继承。例如:

typedef struct Shape_s {
    int s;
}Shape;

typedef struct Circle_s {
    Shape* base;
    int c;
}Circle;

typedef struct ColoredCircle_s {
    Circle* base;
    int cc;
}ColoredCircle;
Run Code Online (Sandbox Code Playgroud)

我想要指针,因为我想让基类成为“私有”,无法访问它。我还想要多态性 - 所有与 Shape 一起使用的函数也必须与派生类一起使用。例如:

shapeDraw(shape);
shapeDraw((Shape*)circle);
shapeDraw((Shape*)coloredCircle);
Run Code Online (Sandbox Code Playgroud)

上面的示例仅适用于一级继承。我不知道如何在更多级别上做到这一点。

c

0
推荐指数
1
解决办法
84
查看次数

使用 GridBagLayout 正确渲染

在所附的屏幕截图中,我有一个JLabel,JTextField和一个JTabel包裹在JSchrollPane. 首先,JLabelJTextField 漂浮在中间很远的地方。上面有很大的空间。我想关闭那个空间。其次,我希望JTable/JSchrollPane填充整个宽度。它只占宽度的一半。并且它不显示表包含的 3 行。

如果我这样做,则会panFindStudent.add(table, gbcFindStud);显示行,但它看起来仍然不漂亮。我想使用JSchrollPane, 以便在表包含许多行/列时可以滚动

我还尝试将JLabel和包装JTexField在 aJPanel中,将 包装JSchrollPane在另一个 中JPanel,然后将这两个JPanels分别添加到JFrame像这样的

findStudentFrame.add(panelWithLabelAndTextField)
findStudentFrame.add(paneLWithShcrollPane)
Run Code Online (Sandbox Code Playgroud)

但这样做,似乎只添加了最后一个面板,而不是第一个面板

我最终也认为这GridBagLayout可能不是这项任务的正确选择,我尝试混合使用GridBagLayoutFlowLayout。它给出了更好的结果,但仍然不令人满意。但我认为最好学习用 解决这个问题GridBagLayout,以便我学习正确使用它。欢迎您提出建议,让我的结果/看起来更好。我已在底部添加了整个代码,因此您可以运行它并更改它。谢谢

在此输入图像描述

我想要与此类似的东西 在此输入图像描述

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Toolkit;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager

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

如何在 Rust 中表示仅具有特定大小的数组

我想要一个表示值数组的数据结构,但它仅支持一组特定的大小并在编译时强制执行。就像是:

struct MyArray<const N: usize>([u8; N]);
Run Code Online (Sandbox Code Playgroud)

但这样的N只能是一组特定的值,而不仅仅是 可以表示的任何数字usize。例如,我希望一个结构体可以包装 a [u8; 3]、 a[u8; 6]或 a [u8; 9],但不能包装除3、6 和 9 之外的[u8; N]任何其他结构体。我需要在编译时强制执行此约束,并且最好是N类型系统。这在 Rust 中可能吗?是否有执行此操作的标准模式或板条箱?

arrays generics rust const-generics

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