问题标签 [iterator-traits]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何引用迭代器类的iterator_traits::reference?
我试图在我制作的自定义容器类中编写迭代器类,并且我在类中定义了编写此行的特征
然后在网络上进行一些研究后,我找到了一种更好的方法来做到这一点,即在迭代器类的 std 命名空间内定义 iterator_traits,然后在容器类之外编写我的迭代器类,这使得代码更具可读性,但之前的错误是我通过编写模板来修复
所以我想知道是否有办法我仍然可以使用第一行代码
c++ - C++ 中迭代器特征的声明
因此,要在自制容器类上使用大多数标准库算法,我已经看到必须为迭代器特征声明 typedef。现在通常这是在 Iterator 类中完成的。
我一直认为标准库试图通过假设访问迭代器的命名空间......container::Iterator::iteratortrait
但是我现在遇到了这样一个事实,即可以简单地在容器类中声明特征,而不是在Iterator
类中。
标准库如何区分在Iterator
类中查找 typedef 和在容器类中查找 typedef?
谢谢
rust - 当忽略某些值时,如何在迭代器实现中避免不必要的昂贵操作?
我有一个Iterator
看起来像这样的实现:
如果我想使用 generate 的每个实例,这很好用Snapshot
,但是如果我想使用Iterator::step_by
or之类的东西Iterator::last
,我不关心中间Snapshot
s,生成那些未使用的值所产生的成本是一个巨大的性能损失。
我可以重写每一个方法,Iterator
这样昂贵的操作只在必要时发生,但我觉得必须有一种更简单、更惯用的方法来做到这一点,或者一种懒惰地Snapshot
从中间类型生成与迭代对应的方法因为Item
如果Iterator::next
没有再次被调用。
我不想返回对 的引用MyType
,因为我希望我生成的sSnapshot
具有独立的生命周期,例如,使 的结果比 的实例寿命更长。Iterator::collect()
MyType
c++ - 如何专门化具有迭代器特征的函数模板?
foo
函数的返回类型的value_type
推导是推导出来的。现在这适用于所有数字类型。
但我希望返回类型(和类型baz
)是推导整数类型的double
时候。value_type
在这种情况下如何进行专业化?
c++ - 在 std::views::join 之后使用 std::views::filter 无法编译
我在使用std::views::filter
连接的流/范围时遇到了麻烦。我不知道这里到底出了什么问题。我想元素可能不会以正确的(复制/移动)语义传递,应该使用引用包装器或其他东西。
第 17 行给出了这个错误信息:
令我惊讶的是在加入的流上使用转换适配器没有任何问题。
我查看了范围的实现,但它只是提出了更多问题。范围的迭代器(上面的 r1...r4)具有iterator_concepts
和iterator_category
成员 typedef,但这些似乎不一致:
有没有办法让第 17 行的 for 循环工作?
rust - 使用适用于 Vec 和数组 [] 的特征编写 rust 函数
我想在 rust 中实现一个函数,计算数组或 Vec 的范数
对于 Vec<f64> 我会将函数编写为
对于 &[f64] 我会做
但是有没有办法通过使用特征将两个版本组合成一个函数。我在想类似的东西
}
这不起作用,因为模板参数 T 不可索引。有可能以某种方式做到这一点吗?也许带有迭代器特征或其他东西?
c++ - std::iterator_traits 中的 iterator_category 与 iterator_category() 有什么区别
为什么在一种情况下我必须编写不带括号的 iterator_category:
在另一种情况下用括号:
如果据我了解, iterator_traits::iterator_category 只是一个 typedef。括号在最后一种情况下有什么作用?他们是否以这种方式返回 iterator_category 的实际值?看起来很明显,但我需要一些确认。抱歉问题可能很愚蠢=)
c++ - “struct std::iterator_traits”中没有名为“iterator_category”的类型'
我正在编写一个自定义矢量类:
编译上面的代码时,我收到此错误(在 GCC 和 MSVC 上):
当我将反向迭代器定义更改为std::reverse_iterator<const T*>
. 相比有什么区别std::reverse_iterator<const_iterator>
?
c++ - std::iterator、std::iterator_traits、std::random_access_iterator_tag 之间的区别
我需要为我的自定义容器编写自己的迭代器(随机访问)。它也需要重新实现iterator_traits
。
我知道这std::iterator
是std::iterator_traits
. 它们都是类。而struct。std::random_access_iterator_tag
_
我的第一次尝试是这样的:(此链接的示例)
但是我不知道在哪里放入iterator_traits
图片?谢谢你的时间!