问题标签 [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.

0 投票
0 回答
36 浏览

c++ - 如何引用迭代器类的iterator_traits::reference?

我试图在我制作的自定义容器类中编写迭代器类,并且我在类中定义了编写此行的特征

然后在网络上进行一些研究后,我找到了一种更好的方法来做到这一点,即在迭代器类的 std 命名空间内定义 iterator_traits,然后在容器类之外编写我的迭代器类,这使得代码更具可读性,但之前的错误是我通过编写模板来修复

所以我想知道是否有办法我仍然可以使用第一行代码

0 投票
0 回答
51 浏览

c++ - C++ 中迭代器特征的声明

因此,要在自制容器类上使用大多数标准库算法,我已经看到必须为迭代器特征声明 typedef。现在通常这是在 Iterator 类中完成的。

我一直认为标准库试图通过假设访问迭代器的命名空间......container::Iterator::iteratortrait

但是我现在遇到了这样一个事实,即可以简单地在容器类中声明特征,而不是在Iterator类中。

标准库如何区分在Iterator类中查找 typedef 和在容器类中查找 typedef?

谢谢

0 投票
1 回答
90 浏览

rust - 当忽略某些值时,如何在迭代器实现中避免不必要的昂贵操作?

我有一个Iterator看起来像这样的实现:

如果我想使用 generate 的每个实例,这很好用Snapshot,但是如果我想使用Iterator::step_byor之类的东西Iterator::last,我不关心中间Snapshots,生成那些未使用的值所产生的成本是一个巨大的性能损失。

可以重写每一个方法,Iterator这样昂贵的操作只在必要时发生,但我觉得必须有一种更简单、更惯用的方法来做到这一点,或者一种懒惰地Snapshot从中间类型生成与迭代对应的方法因为Item如果Iterator::next没有再次被调用。

我不想返回对 的引用MyType,因为我希望我生成的sSnapshot具有独立的生命周期,例如,使 的结果比 的实例寿命更长。Iterator::collect()MyType

0 投票
1 回答
52 浏览

c++ - 如何专门化具有迭代器特征的函数模板?

foo函数的返回类型的value_type推导是推导出来的。现在这适用于所有数字类型。

但我希望返回类型(和类型baz)是推导整数类型的double时候。value_type在这种情况下如何进行专业化?

0 投票
0 回答
85 浏览

c++ - 在 std::views::join 之后使用 std::views::filter 无法编译

我在使用std::views::filter连接的流/范围时遇到了麻烦。我不知道这里到底出了什么问题。我想元素可能不会以正确的(复制/移动)语义传递,应该使用引用包装器或其他东西。

第 17 行给出了这个错误信息:

令我惊讶的是在加入的流上使用转换适配器没有任何问题。

我查看了范围的实现,但它只是提出了更多问题。范围的迭代器(上面的 r1...r4)具有iterator_conceptsiterator_category成员 typedef,但这些似乎不一致:

有没有办法让第 17 行的 for 循环工作?

0 投票
2 回答
108 浏览

rust - 使用适用于 Vec 和数组 [] 的特征编写 rust 函数

我想在 rust 中实现一个函数,计算数组或 Vec 的范数

对于 Vec<f64> 我会将函数编写为

对于 &[f64] 我会做

但是有没有办法通过使用特征将两个版本组合成一个函数。我在想类似的东西

}

这不起作用,因为模板参数 T 不可索引。有可能以某种方式做到这一点吗?也许带有迭代器特征或其他东西?

0 投票
1 回答
57 浏览

c++ - std::iterator_traits 中的 iterator_category 与 iterator_category() 有什么区别

为什么在一种情况下我必须编写不带括号的 iterator_category:

在另一种情况下用括号:

如果据我了解, iterator_traits::iterator_category 只是一个 typedef。括号在最后一种情况下有什么作用?他们是否以这种方式返回 iterator_category 的实际值?看起来很明显,但我需要一些确认。抱歉问题可能很愚蠢=)

0 投票
1 回答
91 浏览

c++ - “struct std::iterator_traits”中没有名为“iterator_category”的类型'

我正在编写一个自定义矢量类:

编译上面的代码时,我收到此错误(在 GCC 和 MSVC 上):

当我将反向迭代器定义更改为std::reverse_iterator<const T*>. 相比有什么区别std::reverse_iterator<const_iterator>

0 投票
0 回答
80 浏览

c++ - std::iterator、std::iterator_traits、std::random_access_iterator_tag 之间的区别

我需要为我的自定义容器编写自己的迭代器(随机访问)。它也需要重新实现iterator_traits

我知道这std::iteratorstd::iterator_traits. 它们都是。而structstd::random_access_iterator_tag_

我的第一次尝试是这样的:(此链接的示例)

但是我不知道在哪里放入iterator_traits图片?谢谢你的时间!