问题列表 - 第318098页

如何在 switch 语句中使用 spaceship 运算符

新的<=>运算符使编写代码更加方便,并且如果比较算法不平凡,它可以节省一些性能,因为它不需要重复两次才能获得完整的排序。

或者至少当我了解到这一点时我是这么认为的。然而,当我尝试在实践中使用它时,在switch声明中,它不起作用。

此代码无法编译:

#include <iostream>

void compare_values(int x, int y)
{
    switch (x <=> y)
    {
    case std::strong_ordering::less:
        std::cout << "is less\n";
        break;
    case std::strong_ordering::greater:
        std::cout << "is greater\n";
        break;
    case std::strong_ordering::equal:
        std::cout << "is equal\n";
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器显示错误,提示返回的值<=>不能在 a 中使用switch

<source>: In function 'void compare_values(int, int)':
<source>:5:15: error: switch quantity not an integer
    5 |     switch (x <=> y)
      |             ~~^~~~~
Compiler returned: 1
Run Code Online (Sandbox Code Playgroud)

活生生的例子

我猜想在 switch 中使用 …

c++ switch-statement spaceship-operator c++20

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

连续的相同颜色单元格应位于同一列、网格框中

在我当前的项目中,我有大量的部分,每个部分都有一两行,范围从 2 到 15 列,宽度相等。相同颜色的单元格放置在同一列中。一个section的定位如下图所示:

在此输入图像描述

为了实现上述布局,我使用了 gridbox。我接近解决方案,但第二行总是向左对齐。

.container {
  display: grid;
  width: 100%;
  grid-template-columns: repeat(auto-fit, minmax(0px, 1fr));
  gap: 5px 10px;
  background-color: steelblue;
}

.field {
  background-color: black;
  box-shadow: inset 0px 0px 2px #ffffff;
  height: 20px;
  color: white;
  text-align: center;
}

.second-row {
  grid-row-start: 2;
}


/* colours */

.colour-black {
  background: black;
}

.colour-blue {
  background: blue;
}

.colour-yellow {
  background: yellow;
}

.colour-red {
  background: red;
}

.colour-orange {
  background: orange;
}

.colour-purple {
  background: purple;
}

.colour-green { …
Run Code Online (Sandbox Code Playgroud)

html css grid-layout flexbox

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

[auth][错误] UnknownAction:无法解析 /api/auth/providers 处的操作。了解更多信息 https://errors.authjs.dev#unknownact​​ion

尝试使用 next-auth authjs-v5 beta 教程设置 next-auth 并收到此未知操作错误,我无法弄清楚问题是什么,并且该网站也没有提到修复程序,只是说了错误名称,没有其他内容

我的包.json

{
  "name": "nextlearn",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@auth/core": "^0.26.3",
    "@auth/prisma-adapter": "^1.3.3",
    "@hookform/resolvers": "^3.3.4",
    "@prisma/client": "^5.9.1",
    "@radix-ui/react-label": "^2.0.2",
    "@radix-ui/react-slot": "^1.0.2",
    "bcrypt": "^5.1.1",
    "class-variance-authority": "^0.7.0",
    "clsx": "^2.1.0",
    "lucide-react": "^0.314.0",
    "next": "^14.1.0",
    "next-auth": "^5.0.0-beta.9",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-hook-form": "^7.49.3",
    "react-icons": "^5.0.1",
    "tailwind-merge": "^2.2.0",
    "tailwindcss-animate": "^1.0.7",
    "zod": "^3.22.4"
  },
  "devDependencies": {
    "@types/bcrypt": "^5.0.2",
    "@types/node": "^20",
    "@types/react": "^18",
    "@types/react-dom": …
Run Code Online (Sandbox Code Playgroud)

next.js next-auth

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

如何根据极地条件计算当前行上方的行数?

让我们有一个极坐标 df:

df = pl.DataFrame(
    {
    'date': ['2022-01-01', '2022-01-02', '2022-01-07', '2022-01-17', '2022-03-02', '2022-06-05', '2022-06-07', '2022-07-02'],
    'col1': [4, 4, 2, 2, 2, 3, 2, 1],
    'col2': [1, 2, 3, 4, 1, 3, 3, 4],
    'col3': [2, 3, 4, 4, 3, 2, 2, 1]
    }
)
Run Code Online (Sandbox Code Playgroud)
日期 第 1 列 列2 第 3 列
2022-01-01 1 1 2
2022-01-02 1 2 3
2022-01-07 2 3 4
2022-01-17 2 4 1
2022-03-02 3 1 3
2022-06-05 3 2 2
2022-06-07 4 3 4 …

python python-polars

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

如果未安装模块,如何使 Raku 测试成为可选

我正在向一个包添加一个功能,该功能可以选择使用DBIish. 我想编写一些单元测试以确保功能正常工作。但是,DBIish它应该是一个可选的依赖项,这意味着您不需要它来安装或使用该包。DBIish如果用户没有安装,如何跳过测试DBIish

就像是:

{
    require ::('DBIish');
    CATCH {
        default {
            skip-testing;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...将是理想的,但可选的测试标志也可以工作,但我似乎找不到有关该主题的任何文档。

raku

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

调用重载的 &lt;brace-enlinedinitializer list&gt; 对于不可转换的类型是不明确的

相关问题:


问题与12类似,但不一样。


#include <type_traits>
#include <vector>

struct A {
    A();
};
static_assert(std::is_convertible_v<double, A> == false);
static_assert(std::is_convertible_v<A, double> == false);

void func(std::vector<double> values);
void func(std::vector<A> as);

int main() {
    func({ 4.2 });
}
Run Code Online (Sandbox Code Playgroud)

显然,doubleA不能相互隐式转换。所以我觉得void func(std::vector<double>)应该叫。

但不同编译器的结果是不同的: https://godbolt.org/z/c1hW47f4c

GCC 无法编译:

<source>: In function 'int main()':
<source>:14:9: error: call of overloaded 'func(<brace-enclosed initializer list>)' is ambiguous
   14 |     func({ 4.2 });
      |     ~~~~^~~~~~~~~
<source>:10:6: note: candidate: 'void func(std::vector<double>)'
   10 | void func(std::vector<double> …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer braced-init-list

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

作为 C++20 协程实现的终端命令

我正在用现代C++20编写我的项目。这个应用程序就像图形模式下的终端/控制台,您可以在其中输入带有各自参数的命令,终端将识别第一个单词,如果在其内部映射中找到它,它会调用映射函数(命令本身) 。这很好用。但现在,我意识到有些命令需要用户交互。例如,如果我想从MS-DOS重新创建del命令,并且用户键入,该命令将需要从键盘获取一个字符(表示是,表示否)。其他一些命令将要求用户键入整个字符串。我怎样才能做到这一点?我正在考虑将我的命令实现为协程,这样我就可以暂停执行,让终端知道我想要单个字符或完整字符串,然后恢复。但我发现协程有点复杂。到目前为止,我有这段代码del *.bak /pyn

enum class e_command_input { SINGLE_CHAR, STRING };

class OS_Command
{
    public:

        // Forward declaration
        struct promise_type;

        using t_handle = std::coroutine_handle<promise_type>;

        struct promise_type
        {
            // Creates the command
            auto get_return_object() -> OS_Command
            {
                return OS_Command{ t_handle::from_promise(*this) };
            }

            auto initial_suspend() -> std::suspend_always
            {
                cout << "    Command starts running" << endl;
                return {};
            }

            auto final_suspend() noexcept -> std::suspend_always
            {
                cout << "    Command finishes …
Run Code Online (Sandbox Code Playgroud)

c++ coroutine

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

我不想在同步队列中使用复制构造函数

此 pop 方法需要一个复制构造函数。但我不想拥有这个。我希望不调用该项目的构造函数或移动构造函数。我必须如何实施它?

auto pop() {
    std::unique_lock<std::mutex> lock(mutex_);
    cond_.wait(lock, [this]() {return queue_.empty() == false; });

    T& item = queue_.front();
    queue_.pop();

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

T& item = queue_.front() 在编译器错误消息之后需要一个复制构造函数。

c++ constructor copy

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

将极坐标数据框中的列组合并为单列

我有一个带有 columns 的极坐标数据框a_0, a_1, a_2, b_0, b_1, b_2。我想将其转换为更长更薄的数据框(3 x 行,但只有 2 列ab),因此a包含a_0[0], a_1[0], a_2[0], a_0[1], a_1[1], a_2[1],...和 相同b。我怎样才能做到这一点?

python reshape python-polars

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

GLIBC:如何告诉可执行文件链接到特定版本的 GLIBC

我们正在构建一个针对 Ubuntu 18.04 LTS 和所有更高版本的 GTK3 应用程序。但是,当我们在 Ubuntu 20.04 版本中构建应用程序时,该应用程序无法在较旧的 Ubuntu 版本上运行。它说

libc.so.6:找不到版本“GLIBC_2.31”(.source 需要)

但如果我在 Ubuntu 18.04 上构建一个应用程序,它将适用于所有后续的 Ubuntu 版本。Ubuntu 18.04 默认情况下有 GLIBC 版本 2.27,该版本适用于所有后续版本。

那么有什么方法可以告诉我的应用程序,该应用程序是使用 GLIBC 2.27 构建的,无论构建该应用程序的操作系统是什么版本?有什么方法可以在构建过程中将 GLIBC 版本的信息提供给应用程序吗?

c unix linux glibc libc

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