问题标签 [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.
scala - 在扩展 trait Iterator 的类中覆盖方法 map 和 flatMap
作为一个 Scala 初学者,我试图为表达式Iterator
中检索和处理的每个项目实现一个计数器,并且每次在for
表达式的一个“循环”(外循环和嵌套循环)开始。counter = counter + 1
要求是在不简单地在表达式中的多个位置放置语句的情况下完成此操作for
。下面的清单显示了我对这个问题提出的解决方案,我想知道,为什么方法next
实现Iterator
的抽象成员被调用(并且相应的计数器增加),而flatMap
覆盖map
它们在 trait 中定义的挂件Iterator
(并通过调用它们super
)不是根本就叫。
对应的for
表达式如下所示:
如果有人能给我提示如何以更好的方式解决给定的问题,我将不胜感激。但最重要的是,我很想知道为什么我的解决方案会覆盖Iterator
'smap
并且flatMap
不像我有限的大脑所期望的那样工作;-)
问候
马丁
c++ - 迭代器的验证
我在一个 C++03 项目中工作。我正在将迭代器放入模板中。我需要断言这个迭代器引用了一个特定的类型。除了编写我自己的结构进行验证之外,C++ 是否为我提供了一种方法来做到这一点?
我想要的是这个 C++14 功能的等价物:
由于它是 C++03,我假设我必须使用 anassert
并且如果它是一个仅运行时的调试检查,我只需要检查就可以了。
c++ - 可以从 istream_iterator 制作 move_iterator 吗?
考虑以下代码:
由于行 (!!!),上面的代码将无法编译:
但是,如果您分别用and替换mstart
and (常规迭代器),则代码将编译。为什么我做不出来?meos
start
eos
move_iterators
编辑:
对于那些想知道为什么我想从流/字符串中移动一个字符的人。char
实际问题涉及比应避免从字符串复制更复杂的数据类型。char
只是为了简单起见而使用,以呈现导致错误的机制。
c++11 - 使用 iterator_traits 从一对迭代器中推导出值类型
我有一个类型
和
我现在想使用 std::iterator_traits 来推断 Range 的迭代器指向的类型。
谁能告诉我如何从 Range 类型的对象中实现这一点?
c++ - 意外的模板实例化导致编译错误
我只是想知道为什么我的代码无法编译。下面的好吗?我正在尝试使用 Category1 和 Category2 typedef-s 声明一个简单的类。
Category1 typedef 可以正常编译,但 Category2 one 不能。
似乎无法编译 Category2 typedef,因为尽管未实例化周围的类 X,但仍实例化了类 iterator_traits<> ……对我来说似乎很困惑。
请注意,我不需要实例化类 X 来得到以下错误(以上是完整的编译单元)。
在 Visual Studio 2012 中,我得到了这个:
在 xutility(364) 中有:
我的情况是我想声明一个在构造函数中获取 lambda 的类。lambda 应该返回对容器的引用。而且我需要确定返回的容器是否具有随机访问迭代器。但是我遇到了这个编译错误。谢谢你的解释!
c++ - 如何获得两个迭代器之间的元素总数?
我编写了一个函数来测试容器中的所有元素是否都是唯一的。
有用。但是,size_t
从size()
和difference_type
从 ,返回distance()
的符号不同。
std::distance可能会根据迭代器的方向返回负数。
如果是这种情况,当元素的数量超过有符号的最大值时,我如何可靠地获得两个迭代器之间的元素总数?我一直在寻找类似std::size的东西,但它需要一个完整的容器。
c++ - 为什么 std::reverse 需要双向迭代器?
为什么std::reverse(c.begin(), c.end())
要求底层容器c
提供双向迭代器?
事实上,这意味着 (multi-) map
, (multi-) set
,但这些不能颠倒,当然,因为它们是有序的。唯一的其他双向容器是list
但它有自己的成员函数.reverse()
。
这意味着一个人可以申请,std::reverse
哪些是随机访问。array
vector
deque
那么,为什么不“诚实”地说:需要随机访问,或者使用成员函数?
c++ - struct std::iterator_traits<...> 中没有名为“指针”的类型
以下是我的linked_list 模板的片段:
当我不using...
注释行时,代码不会编译。
g++5.4:
ICP:
没有那行,所有编译都很好。
问题是:当我using difference_type = typename std::iterator_traits< iterator >::difference_type;
在上面的代码中评论时会发生什么(只有这样的更改代码才能编译)。?
==================================================== ========================= res.on.functions/2.5
- 特别是,在以下情况下 效果是不确定的:...
- 如果在实例化模板组件时将不完整的类型([basic.types])用作模板参数,除非该组件特别允许。
以及对此的历史讨论。
c++ - 为什么在模板函数中使用 iterator_traits 而不是仅仅使用另一个模板类型参数?
例如,参考cplusplus.com的这个片段:
问题是为什么iterator_traits
在这种情况下使用而不是采用另一个模板参数,如下所示:
c++11 - How use std::iterator_traits for my custom container
I am implementing deque having the following structure:
I want to support apis like begin(), end(), cbegin() and cend() and they should return stl compliant iterators. I have heard that using std::iterator_traits it can be done. Help pointers in this regard is appreciated.
Also I want the iterators to be of type bidirectional.