问题标签 [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++ - 使用 BOOST_FOREACH 修改 std::vector 中的指针
我有一个班级node
并声明了一个std::vector<node*>
. 我想使用 BOOST_FOREACH 来迭代向量,但我遇到了一个小问题。
我的代码是这样的:
也就是说,我在迭代指针时尝试修改指针的地址。问题是,虽然创建了新节点,但 in 的指针vector_of_nodes
保持不变。我想这是Boost如何管理对指针的访问的问题,因为如果我使用常规迭代器进行等效处理:
该代码运行良好,并按预期工作。
我可以改用那个版本,但我很好奇......为什么第一个版本不起作用?
c++ - C++ BOOST ForEach 与自定义宏
使用 BOOST 的 ForEach 和我自己的自定义 #define 宏来迭代容器有什么区别?
矿:
请解释哪种方法更好,为什么?
c++ - 两个向量的可迭代联合
我有两个数组,如下:
无论出于何种原因,我想要某种容器对象,它可以让我单独访问两个向量,还可以迭代它们的联合,允许执行如下操作:
我可以自己编写这个联合类,但也许已经有一个允许这样做的库?
c++ - 反向迭代流
我想用反向std::find_if
遍历一个内容。std::streambuf
这涉及std::reverse_iterator
从std::istream_iterator
or构造一个std::istreambuf_iterator
。不幸的是,尝试执行此操作(如下面的代码示例所示)会导致编译错误。我怎样才能让它工作?如有必要,使用 Boost 的解决方案会很棒。
这是由报告的编译错误g++-4.8.1
:
谢谢你的帮助!
iterator - 在 C++ (MWE) 中迭代 std::vector 和其他容器的键/值
我将下面的代码基于以下非常有用的帖子。
迭代键/值
这件事适用于 std::maps (ValueGetter 需要调整)但为什么下面的代码也不适用于 std::vector?我将代码放在一个类SpecialList
中,然后我可以从不同的容器继承......问题在于(*it)
最后访问。我不明白为什么这不能编译?(MWE)
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
也有效:
我仍然不知道这对于可递增类型是否是正确的做法。
c++ - 将 JsonCPP ValueIterator 与 STL 算法一起使用
我知道,ValueIterator
JsonCPP 不能直接用于标准 STL 算法。但是是否有一些“间接”的方式在 STL 算法中使用它(可能通过Boost.Iterator或类似的东西)?我想要以下内容:
c++ - 优雅的代码从 3 Array 中找到 5 max top number
我读了那个博客,其中一个 C# 程序员展示了如何使用 LINQ 从 3 个不同的数组中提取 5 个最高数字。
我尝试用 C++ 做同样的事情并编写了以下代码,使用向量和排序只有 5 行代码。输出88 89 110 888 921
符合预期。
但问题是,你有更好的解决方案吗?
boost - boost::multi_index 容器中迭代器功能投影的复杂性
有谁知道 boost::multi_index 库中迭代器投影的复杂性?文档可以在这里找到boost::multi_index projection of iterators但它没有说明操作的复杂性。
基本思想是,您可以检索索引内对象的迭代器,然后将其投影到第二个索引中,并获取同一对象但在第二个索引内的迭代器。如果这是一个 O(1) 操作,那么您可以有效地维护两个索引,一个是可快速搜索的,一个是较慢的。据我了解,迭代器的投影允许我在索引中找到一个搜索速度更快的对象,然后将其投影到搜索速度较慢的索引中。
我很想知道它是否是迭代器投影的简单 O(1) 查找,或者它是否有效地启动了第二个索引中的查找操作,因此取决于您投影到的特定索引并且速度较慢比 O(1)。
非常感谢您的帮助!
boost - 我可以将 boost::iterator “推”到 boost iostream 上吗
我设法开始工作:
1) base 64 编码器/解码器使用 boost::archive::iterators 从 Base64 派生的编码器使用 boost throw 异常
2) 使用 boost::iostreams 的压缩器,如下所示: boost zlib 问题
所以代码看起来像这样:
这似乎复制了很多数据。
有没有办法将 base64 编码器推送到 iostream 上?