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

0 投票
3 回答
2275 浏览

c++ - transform_iterator 编译问题

你好,

我不喜欢发布编译问题,但我真的无法解决这个问题。使用此代码:

得到这个编译错误:

谁能解释为什么这不起作用?我正在使用带有 boost 1.36.0 的 Visual Studio 7.0

谢谢。

0 投票
2 回答
1528 浏览

c++ - boost迭代器适配器的编译器错误

我正在尝试使用 boost 迭代器适配器为 CArray MFC 类编写一个简单的 STL 迭代器。这是我的代码:

使用 VC9 编译器可以很好地编译。但是当我尝试用 VC7 编译它时,我得到以下错误:

\include\boost\iterator\iterator_traits.hpp(49) : erro r C2039: 'difference_type' : is not a member of 'boost::detail::iterator_traits< Iterator>' with [ Iterator=int ]

\include\boost\mpl\eval_if.hpp(41) :参见使用 [ Iterator=int ] 编译的类模板实例化 'boost::iterator_difference' 的参考

.... 多一点 ....

有什么线索可能是错的吗?我必须包含其他一些头文件?我对提升图书馆很陌生。

0 投票
1 回答
8553 浏览

c++ - 使用 boost::iterator

我写了一个稀疏向量类(见#1#2。)

我想提供两种迭代器:

第一个集合,常规迭代器,可以指向任何元素,无论是设置的还是未设置的。如果它们被读取,它们返回设置值,或者value_type(),如果它们被写入,它们创建元素并返回左值引用。因此,它们是:

随机访问遍历迭代器可读迭代器

第二个集合,稀疏迭代器,仅迭代集合元素。由于它们不需要懒惰地创建写入的元素,因此它们是:

随机访问遍历迭代器可读左值迭代器

我还需要两者的 const 版本,它们是不可写的。

我可以填空,但不确定如何使用 boost::iterator_adaptor 开始。

这是我到目前为止所拥有的:

还有,这是违法的吗?

0 投票
1 回答
419 浏览

c++ - 迭代指针向量的 getter

我正在尝试编写一个迭代器类,它在取消引用时返回一个 getter 函数返回值。代码工作正常,我唯一的问题是我想只使用一个模板参数而不是 3 来编写 member_ptr_functor,因为我应该能够从成员函数类型中推断出参数的类型和返回值。我认为有问题的是参数类型,我尝试使用 boost::remove_ptr&,但我无法编译它。

哈盖。

0 投票
1 回答
2036 浏览

c++ - 如何让迭代器进入 boost fusion map?

我正在尝试获取迭代器boost::fusion::map,但我错过了一些东西。

以下适用于boost::fusion::vector

输出:

我想做类似的事情,fusion::map但它无法编译:

我包括这些:

错误:

0 投票
3 回答
9190 浏览

c++ - 跳过迭代器

我有一个值序列,我想将它们传递给一个需要一(iterator begin, iterator end)对的函数。但是,我只希望处理原始序列中的每个第二个元素。

有没有一种使用 Standard-Lib/Boost 的好方法来创建一个允许我传入原始序列的迭代器外观?我认为像这样简单的东西已经在 boost 迭代器或范围库中,但我没有找到任何东西。

还是我错过了另一种完全明显的方法?当然,我知道我总是可以选择将值复制到另一个序列,但这不是我想要做的。

编辑:我知道filter_iterator,但是过滤值 - 它不会改变迭代前进的方式。

0 投票
3 回答
1356 浏览

c++ - 使用 C++ 迭代器从文件中读取列表?

我正在尝试从文件中读取/反序列化元素列表(然后过滤掉其中的一些)。为此目的使用迭代器是一种有用的方法吗?

我目前的尝试是

这没有正确地释放内存(例如,readNew 返回一个指向新 Elem 的指针),这样做的正确方法是什么?另外,如何实际使用这样的迭代器,如何确定结果?还是有比使用迭代器更好的方法?

0 投票
3 回答
855 浏览

c++ - 在 boost 中,如何将 boost 迭代器传递给以 std::string 形式转换的函数

请参阅以下代码末尾的特定问题作为注释。

0 投票
1 回答
272 浏览

c++ - Boost:迭代图像区域

我有我不拥有的图像,带有相邻的单色像素,我目前使用哑指针增量对其进行迭代。

我现在需要迭代 2D 区域,所以我正在考虑提供高效且易于编写的迭代器的最佳方法。

我只需要forward_iterator。如果我有一个 10x10 的图像,并且我想在 4x3 的左上角区域进行迭代,它将在这些元素上进行迭代:

我有两个选择:

  • 用手写boost::iterator_facade
  • use boost::range_iterator,它给了我一个数组的迭代器,并修改它的行为boost::iterator_adaptor

你认为最好的是什么?

0 投票
1 回答
145 浏览

c++ - Boost双向迭代器不可写的问题

我尝试使用 Boost Iterator 制作双向迭代器。我已经按照此处文档中的建议实现了一些功能。

我有一个父类,其中要实现的函数被声明为纯虚拟(我需要多态迭代器)。目前,我有一个实现功能的继承类。此外,我使用 boost::bidirectional_traversal_tag。

dereference() 函数在继承类中实现如下:

像下面的例子一样读取值,它工作得很好:

(其中 isEndReached() 是个人功能)。问题是以下代码不起作用:

g++ 返回以下错误:

怎么了 ?

谢谢