问题标签 [boost-iterators]
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 中嵌套的指针类型有什么用?
类std::iterator_traits
模板定义了 5 种嵌套类型:iterator_category
、value_type
、difference_type
和. 浏览libc++ 和 libstdc++ 头文件的来源,可以看到 , 和 的许多用途,但只有一种用于(inside ) 而没有用于.pointer
reference
<algorithm>
value_type
difference_type
iterator_category
reference
std::iter_swap
pointer
我的应用程序使用手动构建的代理迭代器/代理引用对。我想过渡到使用 Boost iterator_facade
,它可以让我将引用类型从默认配置T&
为任意类型,但对于T*
默认的指针类型则不然。pointer
我想避免被嵌套类型的一些深藏不露的使用所困扰。
注意:迭代器是没有嵌套成员的内置类型的代理,所以我不需要兼容operator->
(返回类型为pointer
)。
问题pointer
:标准库中的嵌套类型有哪些用例iterator_traits
?
c++ - 用于多维 C 数组的 C++ 迭代器
我有大量需要迭代的 3 到 6 维 C 数组。像 boost::multi_array 这样的更多 C++'y 表示不是一个选项,因为这些数组来自 C 框架 PETSc(使用 fortran 排序,因此向后索引)。简单的循环最终看起来像这样:
甚至更糟:
有很多这样的例子,循环索引的范围不同,这一切都变得非常丑陋并且可能容易出错。应该如何为这样的多维数组构造迭代器?
c++ - 在第三方容器中使用基于范围的 for 循环
我目前正在使用一个第三方库,其中包含一个仅提供索引查找的类,即operator[]
.
我想对这个类的内容做一个基于范围的 for 循环。但是,由于从未编写过迭代器或迭代器适配器,我很迷茫。似乎编写迭代器并不是一项简单的任务。
我想要的用法是:
而不必写:
如何做到这一点?Boost 是否提供此功能?
c++ - 将任何迭代器转换为随机访问迭代器的适配器
我有任何不提供随机访问迭代器的容器,目标是创建一个适配器,该适配器接受此类迭代器的输入并为容器提供随机访问迭代器接口。
我不确定如何使用boost::iterator_facade
,因为它有点令人困惑:-/ 有一些关于堆栈溢出的示例,但我不确定如何使用它们(这里)
任何链接/示例都可能会有所帮助。(boost
考虑到我在boost
c++ - 在 C++ 中将惰性生成器实现为 forward_iterator
MyGenerator 表示(可能)有限的整数序列,计算成本很高。所以我不想预先生成它们并将它们放入容器中。
全部打印:
如何实现遵循 forward_iterator 协议的类似生成器?
boost::function_input_iterator接近,但我不知道预先的元素数量。
c++ - boost::range::detail::any_iterator 不能很好地与 boost::zip_iterator 配合使用
考虑以下代码:
它在没有优化的情况下编译时按预期工作(即打印“1 a\n2 b ...”),但在使用 -O2 编译时会出现段错误或产生垃圾(同时使用 clang-3.6.0 和 gcc-4.9.2, boost 1.56.0) 我不知道出了什么问题。
此外,当 IntCharIterator 包装器被删除时,代码在任一优化级别上都可以按预期工作。
有谁知道这里发生了什么?
c++ - boost:type_erasure 和 boost::iterator_facade 之间的冲突
考虑这个非常简单的程序:
这无法编译:
我不想去更改那些头文件。我该如何解决这个问题?
c++ - {} 是否是传递给期望迭代器的函数的有效参数(表示某些容器的 std::end() )?
在boost directory_iterator 示例中-如何列出不递归的目录文件(请参阅此答案)是示例代码
(p
是类型boost::filesystem::path
。)
在查看文档make_iterator_range
后,我认为被调用的构造函数是这个:
如果我是对的,那么上面代码示例中传递的第二个参数{}
, 似乎对应于任何容器的结尾,该容器被directory_iterator
.
我以前从未见过这种情况。
是否可以end
仅通过从空的初始值设定项列表中构造这样的迭代器来构造迭代器{}
?(我的措辞是否正确?)
鉴于如此构造的迭代器的类型必须与第一个迭代器的类型相匹配directory_iterator(p)
((这里是否进行模板参数推导?)
iterator - 在 Boost Graph Library 中,为什么添加边会使边迭代器(和其他问题)无效?
关于BGL 文档中标记为“描述符和迭代器无效摘要”的图表的几个问题:
- 为什么添加边会使边和邻接迭代器无效;为什么 add_edge() 行的每一列都不是“OK”?不会简单地附加输入/输出边缘列表吗?
- 如果图是有向的,为什么删除边只会使边迭代器无效?为什么第二行倒数第二列不只是“EL=vecS”?在无向图的情况下,不会从两个边列表(一个用于源顶点,一个用于目标顶点)中删除一条边,这会使这两个列表中的迭代器无效?
谢谢!
boost - Custom Iterator using boost iterator
I've a custom data structure like following:
I need to implement these APIs. How can I implement these using boost iterator library?
Also, I may need to take a Predicate to allow filtering
Some pointer to get started will be very helpful. One clarification: I cannot use c++0x compiler flags as I need to use c++98 only. So, please suggest a solution that doesn't need c++11 or c++03 compiler flag.
Also, if I design an iterator like following (nested in the GraphDM class), I'm essentially exposing details my data-structure. Is there a way to make the iterator to iterate only on the Key's of the map (and not the value)? Then I can return a different type of iterator for the getFanins() and getFanout() which would be iterator from the value list.