小编Bri*_*ian的帖子

std::span 中 std::dynamic_extent 的用途是什么

我知道std::span是静态的。它只是一堆向量/数组/等的视图。元素。

我看到span的构造函数,好像std::dynamic_extent是在4-6中使用的。但在这些构造函数中,大小有一个必需的模板参数 - std::size_t N。对我来说,这意味着大小/计数/长度在编译时是已知的。那么到底是什么std::dynamic_extent?

c++ std std-span

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

std::set 已经包含该成员,即使它不同

我写了以下简单的代码:

std::set<Edge> edges;
Edge edge1("a","b");
Edge edge2("a","c");
edges.insert(edge1);
if (edges.find(edge2) != edges.end()) //edge2 already exists
    std::cout << "OH NO!";
Run Code Online (Sandbox Code Playgroud)

这有一个错误,因为哦不!即使被打印edge1并且edge2彼此不同。

以下是我已经实现operator ==并operator <为Edge:

bool operator==(const Edge &e1, const Edge &e2) {
    return (e1.source == e2.source) && (e1.destination == e2.destination);
}

bool operator<(const Edge &e1, const Edge &e2) {
    return e1.source < e2.source;
}
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个错误?

c++ set

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

类构造器上的指针

我正在做一个个人项目,我需要一个动态工厂。目前我有以下“系统”:

class Action { ...} // Which is abstract
class A : public Action { ... }
class B : public Action { ... }
class C : public Action { ... }

...

std::map<std::string, Action *> _actions;
_action.insert( { "A", new A() } );
_action.insert( { "B", new B() } );
_action.insert( { "C", new C() } );

Action * act = _actions.find("B")->second; // Get action's pointer
Run Code Online (Sandbox Code Playgroud)

但是我对这个解决方案并不满意,因为即使我从不使用这些操作,它们也会在启动时实例化并在应用程序的所有生命周期中都保留在内存中,如果我想要一个“干净”的对象,我需要动态转换我的对象以确定它的类型以通过复制调用构造函数......我不是这个解决方案的真正粉丝,因为我必须“硬编码”所有情况......

我不知道我想象的解决方案是否真的可行,但这是我的想法:

我保留了以前的类层次结构,即:

class Action { ...} // Which is abstract
class …
Run Code Online (Sandbox Code Playgroud)

c++ std

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

简化 sympy.sympify 给出的表达式

当您的表达式由 sp.sympify 给出时,sp.simplify 似乎不起作用。我怎样才能改变这一点?

\n
import sympy as sp\n\nr = sp.Symbol('r', real = True)\nf_str = 'sqrt(1/r**4)'\n\nf1 = sp.sympify( f_str )\nf2 = sp.sqrt(1/r**4)\n\nfor f in f1,f2:\n    sp.pprint(sp.simplify(f))\n
Run Code Online (Sandbox Code Playgroud)\n

哪个输出

\n
     ____\n    \xe2\x95\xb1 1  \n   \xe2\x95\xb1  \xe2\x94\x80\xe2\x94\x80           # f1\n  \xe2\x95\xb1    4 \n\xe2\x95\xb2\xe2\x95\xb1    r  \n\n1 \n\xe2\x94\x80\xe2\x94\x80                 # f2\n 2\nr \n
Run Code Online (Sandbox Code Playgroud)\n

我期望给定一个实值 (r),sympify 表达式可以得到简化

\n

python sympy

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

如何在 VS C++ 项目中使用“内置”函数 __builtin_ctzll?

我发现__builtin_ctzll通过后Intrinsic 来计算 64 位整数中的尾随零位非常快地计算 64 位 int 的尾随零位?。

我是 C++ 的初学者,不知道如何包含这个函数。

我尝试使用#include,但这没有任何意义。我发现这个“内置”来自 GNU,但我不知道如何处理这些信息。如何为我的项目准备合适的库/扩展?

c++ gnu built-in bitcount

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

MSVC:为什么在没有事先声明的情况下使用枚举可以编译?

在使用 C++ 时,我发现以下代码

enum E* kind;
int main() { }
Run Code Online (Sandbox Code Playgroud)

在 MSVC v19.latest 上编译。我预计这会失败,因为E尚未宣布。GCC 和 Clang 给出适当的错误消息

错误:使用枚举“E”而没有事先声明

和

错误:ISO C++ 禁止前向引用“enum”类型

分别。

为什么上面的代码可以在MSVC上编译?MSVC 不遵循标准吗?是 UB、错误还是功能?

c++ enums declaration visual-c++ language-lawyer

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

我们可以为值文字定义类型别名吗?

类型别名通常可以这样使用:

type Point = (Double, Double)

但我正在使用 scala repl,你也可以这样做:

type Two = 2

使用此别名您可以定义函数:

scala> def three(x: Two) = x + 1
def three(x: Two): Int

scala> three(1)
-- Error:
1 |three(1)
  |      ^
  |      Found:    (1 : Int)
  |      Required: Two

scala> three(2)
val res0: Int = 3
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Two确实似乎代表了 的单例类型2。它似乎只适用于值文字,不适用于变量:

scala> val x = 2
val x: Int = 2

scala> type Two = x
-- Error:
1 |type Two = x
  |           ^
  | …
Run Code Online (Sandbox Code Playgroud)

scala

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

无法从“打字”中导入姓名“自我”

有人知道如何解决这个问题吗?

Exception has occurred: ImportError
cannot import name 'self' from 'typing' (C:\Users\Piotr\AppData\Local\Programs\Python\Python310\lib\typing.py)
  File "C:\Users\Piotr\Downloads\music_bot-main\music_cog.py", line 2, in <module>
    from typing import self
ImportError: cannot import name 'self' from 'typing' (C:\Users\Piotr\AppData\Local\Programs\Python\Python310\lib\typing.py)
Run Code Online (Sandbox Code Playgroud)

我想制作一个可以播放音乐的不和谐机器人,但这就是阻止我制作它的问题。

python python-typing

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

如何签署 Git 笔记?

Git 注释是向 Git 对象添加元信息的功能。请参阅这篇Stackoverflow 文章了解更多详细信息。与提交类似,我也想签署注释。

我的本地 Git 配置为对所有提交进行签名。虽然签署 Git 提交按预期工作,但 Git 注释仍然未签名。在我的本地 Git 配置中,我有以下内容:

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

为了签署笔记,我尝试了以下方法。

# excerpt from ~/.gitconfig
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

我怎样才能使 Git 注释也被签名?

git security digital-signature git-notes

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

重命名 main.rs 并与货物一起使用

是否可以更改名称main.rs并仍然具有cargo run工作之类的命令?

如果可能的话,有人可以给我一个如何让cargo run目标说的例子example.rs吗?

rust rust-cargo

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

“filter=lfs diff=lfs merge=lfs ”在 .gitattributes 中做什么?

我在这里看到代码
https://gist.github.com/Srfigie/77b5c15bc5eb61733a74d34d10b3ed87

#Image
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)

git gitattributes git-lfs

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

sizeof 推断类型 long unsigned int 而不是 C 中的 int

我有以下代码

#include <stdio.h>

enum weekDays {
  Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};

int main()
{
  const enum weekDays today = Wednesday;

  printf("Size of today is %d", sizeof(today));

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

但我尝试使用编译时gcc <filename> -o <output_name>出现以下错误:

#include <stdio.h>

enum weekDays {
  Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
};

int main()
{
  const enum weekDays today = Wednesday;

  printf("Size of today is %d", sizeof(today));

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

就像返回类型sizeof是 long unsigned int 而不是整数

另外,我看了一些 C 教程,我的代码在这些视频中运行良好。IE:

在此输入图像描述

c enums types integer

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

java有堆数据结构吗?

我正在大学学习数据结构和算法,我在教科书中遇到了霍夫曼代码。我尝试在 Visual Studio 代码上运行代码,但收到堆数据结构的错误消息。消息是:

堆无法解析为类型

代码如下:

Heap<Tree> heap = new Heap<>(); // Defined in Listing 24.10      
Run Code Online (Sandbox Code Playgroud)

我还尝试将堆更改为优先级队列,但随后 getSize() 方法显示错误。

java algorithm heap data-structures

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