小编Fid*_*ido的帖子

Pycharm 自动完成对带边界的 TypeVar 不起作用

当我在 Pycharm 中使用带有边界的 TypeVar 时,没有与 Typevar 的上限相关的提示。例子:

from typing import TypeVar

class TestClass:

    def test_class_method(self):
        print("test")

T = TypeVar('T', bound=TestClass)

def test_method(test_class: T):
    test_class.test_class_method()

test_method(TestClass())
Run Code Online (Sandbox Code Playgroud)

在这里,我希望test_class method当我在test_class. 但是什么都没有。当我突出显示 时test_class,有一个工具提示正确说明:推断类型:TypeVar('T', TestClass)。我这边有错误,还是自动完成问题?

python autocomplete type-hinting pycharm

6
推荐指数
0
解决办法
543
查看次数

如何放置到 std::array 的 std::vector?

使用向量向量,我可以这样做:

std::vector<std::vector<int>> vov;
vov.emplace_back(std::initializer_list<int>{0, 0});
Run Code Online (Sandbox Code Playgroud)

但是, std::array 的向量等效失败:

std::vector<std::array<int, 2>> voa;
voa.emplace_back(std::initializer_list<int>{0,0});
Run Code Online (Sandbox Code Playgroud)

在向量中放置数组的正确方法是什么?

编辑:

是的,您可以从初始化列表创建 std::array :

std::array<int, 2> a = {0, 0}
Run Code Online (Sandbox Code Playgroud)

工作正常。

错误:

error C2664: 'std::array<int,2>::array(const std::array<int,2> &)': cannot convert argument 1 from 'std::initializer_list<int>' to 'const std::array<int,2> &'
Run Code Online (Sandbox Code Playgroud)

c++ stdvector stdarray emplace

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