问题标签 [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 投票
1 回答
494 浏览

c++ - 使用 BOOST_FOREACH 修改 std::vector 中的指针

我有一个班级node并声明了一个std::vector<node*>. 我想使用 BOOST_FOREACH 来迭代向量,但我遇到了一个小问题。

我的代码是这样的:

也就是说,我在迭代指针时尝试修改指针的地址。问题是,虽然创建了新节点,但 in 的指针vector_of_nodes保持不变。我想这是Boost如何管理对指针的访问的问题,因为如果我使用常规迭代器进行等效处理:

该代码运行良好,并按预期工作。

我可以改用那个版本,但我很好奇......为什么第一个版本不起作用?

0 投票
1 回答
805 浏览

c++ - C++ BOOST ForEach 与自定义宏

使用 BOOST 的 ForEach 和我自己的自定义 #define 宏来迭代容器有什么区别?

矿:

请解释哪种方法更好,为什么?

0 投票
1 回答
273 浏览

c++ - 两个向量的可迭代联合

我有两个数组,如下:

无论出于何种原因,我想要某种容器对象,它可以让我单独访问两个向量,还可以迭代它们的联合,允许执行如下操作:

我可以自己编写这个联合类,但也许已经有一个允许这样做的库?

0 投票
1 回答
1595 浏览

c++ - 反向迭代流

我想用反向std::find_if遍历一个内容。std::streambuf这涉及std::reverse_iteratorstd::istream_iteratoror构造一个std::istreambuf_iterator。不幸的是,尝试执行此操作(如下面的代码示例所示)会导致编译错误。我怎样才能让它工作?如有必要,使用 Boost 的解决方案会很棒。

这是由报告的编译错误g++-4.8.1

谢谢你的帮助!

0 投票
1 回答
56 浏览

iterator - 在 C++ (MWE) 中迭代 std::vector 和其他容器的键/值

我将下面的代码基于以下非常有用的帖子。 迭代键/值 这件事适用于 std::maps (ValueGetter 需要调整)但为什么下面的代码也不适用于 std::vector?我将代码放在一个类SpecialList中,然后我可以从不同的容器继承......问题在于(*it)最后访问。我不明白为什么这不能编译?(MWE)

0 投票
1 回答
1104 浏览

c++ - 将 boostcounting_iterator 与 Incrementable 类型一起使用

我正在尝试将 Incrementable 类型与boost::counting_iterator.

boost::counting_iterator 文档说迭代器适用于 Incrementable 类型,即 CopyConstructible、Assignable、PreIncrementable 和 EqualityComparable 的类型。

我的增量类型:

这无法编译:

错误:

我猜我需要实现一个 iterator_category :

  • 我的 Incrementable 类型的counting_iterator,
  • 或者正如错误所说,对于我的 Incrementable 类型(这是否有意义?我的 Incrementable 类型不是迭代器)。

从文档中也不清楚(完全省略了这个主题),我在图书馆的其他部分找不到任何关于它的信息。

所以我在boost::detail命名空间中添加了以下内容:

现在一切都按预期编译和工作。不过,我真的怀疑该库是否打算以这种方式使用。

任何人都知道实现这一点的正确/干净的方法吗?

Steve Jessop 的建议:专业化std::numeric_limits也有效:

我仍然不知道这对于可递增类型是否是正确的做法。

0 投票
1 回答
682 浏览

c++ - 将 JsonCPP ValueIterator 与 STL 算法一起使用

我知道,ValueIteratorJsonCPP 不能直接用于标准 STL 算法。但是是否有一些“间接”的方式在 STL 算法中使用它(可能通过Boost.Iterator或类似的东西)?我想要以下内容:

0 投票
6 回答
1776 浏览

c++ - 优雅的代码从 3 Array 中找到 5 max top number

我读了那个博客,其中一个 C# 程序员展示了如何使用 LINQ 从 3 个不同的数组中提取 5 个最高数字。

我尝试用 C++ 做同样的事情并编写了以下代码,使用向量和排序只有 5 行代码。输出88 89 110 888 921符合预期。

但问题是,你有更好的解决方案吗?

0 投票
1 回答
171 浏览

boost - boost::multi_index 容器中迭代器功能投影的复杂性

有谁知道 boost::multi_index 库中迭代器投影的复杂性?文档可以在这里找到boost::multi_index projection of iterators但它没有说明操作的复杂性。

基本思想是,您可以检索索引内对象的迭代器,然后将其投影到第二个索引中,并获取同一对象但在第二个索引内的迭代器。如果这是一个 O(1) 操作,那么您可以有效地维护两个索引,一个是可快速搜索的,一个是较慢的。据我了解,迭代器的投影允许我在索引中找到一个搜索速度更快的对象,然后将其投影到搜索速度较慢的索引中。

我很想知道它是否是迭代器投影的简单 O(1) 查找,或者它是否有效地启动了第二个索引中的查找操作,因此取决于您投影到的特定索引并且速度较慢比 O(1)。

非常感谢您的帮助!

0 投票
0 回答
457 浏览

boost - 我可以将 boost::iterator “推”到 boost iostream 上吗

我设法开始工作:

1) base 64 编码器/解码器使用 boost::archive::iterators 从 Base64 派生的编码器使用 boost throw 异常

2) 使用 boost::iostreams 的压缩器,如下所示: boost zlib 问题

所以代码看起来像这样:

这似乎复制了很多数据。

有没有办法将 base64 编码器推送到 iostream 上?