小编auz*_*uzn的帖子

`isinstance()` 应该检查输入还是 collections.abc 吗?

typingcollections.abc包括类似的类型,例如MappingSequence等。

根据 python 文档,似乎collections.abc首选类型检查:

该模块提供了抽象基类,可以用来测试一个类是否提供了特定的接口;例如,它是否可散列或是否是映射。 https://docs.python.org/3/library/collections.abc.html

但使用typing也有效,我宁愿不Mappingtyping和导入collections.abctyping那么使用with有什么问题吗isinstance()

python isinstance

10
推荐指数
2
解决办法
2315
查看次数

使用 {fmt} 格式化容器

我正在尝试使用 {fmt} 打印 std::vector 或 std::array ,如下所示:

std::vector<double> vec = {1., 2., 3.};
fmt::print("{:0.3f}\n", fmt::join(vec, ","));
Run Code Online (Sandbox Code Playgroud)

问题是,我希望打印一个变换后的向量:

std::vector<double> vec = {1., 2., 3.};
std::vector<double> vec_dup;
std::transform(vec.begin(), vec.end(), std::back_inserter(vec_dup), [](auto x){return x * M_PI;});
fmt::print("{:0.3f}\n", fmt::join(vec_dup, ","));
Run Code Online (Sandbox Code Playgroud)

有没有办法在 C++17 中执行此操作而不需要创建新容器?

c++ c++17 fmt

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

numpy.memmap 返回的内存不足,但有足够的可用内存

在 64 位 Windows 机器上的典型调用过程中numpy.memmap(),python 会引发以下错误:

OSError: [WinError 8] Not enough memory resources are available to process this command
Run Code Online (Sandbox Code Playgroud)

不同的 Windows 机器会用不同的文本引发相同的错误:

OSError: [WinError 8] Not enough storage is available to process this command.
Run Code Online (Sandbox Code Playgroud)

这是代码摘要:

with open(infile, 'rb') as f:
  ......
  array = numpy.memmap(f, dtype='uint8', mode='r', offset=offset, shape=arraysize).tolist()
Run Code Online (Sandbox Code Playgroud)

此时Python仅使用了50MB的内存。内存不足的原因是什么?

python numpy numpy-memmap

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

如何避免为第三方标头应用编译标志

我们想要添加-Werror=conversion到我们的代码库中,但是 Eigen 库的标头会触发很多此类错误。我想知道这里最好的方法是什么,以便编译标志仅适用于我们的代码,但不适用于第三方标头。

我们正在考虑的一种解决方案是为 Eigen 创建一个包装器库,其中仅包含我们需要的内容。我们将编译没有标志的包装器。但这是一项艰巨的任务。我想知道是否还有其他解决方案。

c++ gcc cmake eigen

4
推荐指数
2
解决办法
149
查看次数

有没有办法让shared_ptr.reset(new obj)首先调用析构函数?

在这个例子中

std::shared_ptr<obj> ptr = new obj("old");
ptr.reset(new obj("new"));
Run Code Online (Sandbox Code Playgroud)

obj("new")将首先调用will 的构造函数,然后调用will的析构函数obj("old").

有没有办法首先破坏obj("old")然后再构建obj("new")?(除ptr.reset()先致电然后致电ptr.reset(new obj("new")))

c++ shared-ptr

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

标签 统计

c++ ×3

python ×2

c++17 ×1

cmake ×1

eigen ×1

fmt ×1

gcc ×1

isinstance ×1

numpy ×1

numpy-memmap ×1

shared-ptr ×1