小编Dav*_*vid的帖子

我可以使用Python'"in"关键字使我的课程更好吗?

我正在进入使用Python的5小时左右的经验,到目前为止,我对它的功能印象非常深刻.我目前的努力是对Stream类进行简短的尝试,其代码如下:

class Stream:

    """A Basic class implementing the stream abstraction. """

    def __init__(self,data,funct):
        self.current = data
        self._f = funct

    def stream_first(self):
        """Returns the first element of the stream"""
        return self.current

    def stream_pop(self):
        """Removes and returns the first element of the stream. """
        temp = self.current
        self.current = self._f(self.current)
        return temp
Run Code Online (Sandbox Code Playgroud)

在那里享受适度的成功,我试图创建一个BoundedStream类,其行为基本上类似于无界的类,除了在某个点上它用完了元素.我现在的问题是,看到任何这样的有界流有一些有限数量的元素,应该可以迭代它们.如果我使用的是显式列表,我可以使用Python的in关键字和for循环来干净利落地完成.我想为自己的班级保持清洁.是否有一些我可以实现的方法,或任何其他语言功能,这将允许我这样做?任何你可能提供给新手的答案或其他帮助将不胜感激!

-大卫

PS

对于那些想知道的人来说,有界流的推动力是我尝试了内置range函数,但是Python声称我想看的范围太大了.为了提高内存效率,我转向了Streams.

python

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

将元组类型转换为另一种元组类型

假设我有一个元组类型std::tuple<x,y,z>,或者可能是std::tuple<a,b>. 我想要一种通用的方法来转换我的元组中的类型,例如“函数化”以获得

std::tuple<std::function<void(x)>,
           std::function<void(y)>,
           std::function<void(z)>>
Run Code Online (Sandbox Code Playgroud)

或者可能为 shared_pointers 获取存储空间,例如

std::tuple<std::shared_pointer<a>,
           std::shared_pointer<b>>
Run Code Online (Sandbox Code Playgroud)

我将如何使用 C++17 实现这一目标?C++20 回答有趣但不适用于我目前的情况。

动机:我有一个类,它将被一个任意类型的列表参数化,不一定是唯一的类型,并且希望列表中的每个类型都有一个 std::function 成员。

c++ variadic-templates

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

标签 统计

c++ ×1

python ×1

variadic-templates ×1