问题标签 [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 回答
8613 浏览

c++ - 将键值对文件读入 std::map

我有一个 Visual Studio 2008 C++03 项目,我想在其中将键值对文件读入 std::map。为此,我创建了istreambuf_pair_iterator如下:

一旦我std::pair<>从文件中读取了字符串,我应该将它存储在哪里,以便它可以通过std::inserterin 插入到std::map?

0 投票
2 回答
1422 浏览

c++ - C++:在尝试迭代 boost::unordered_map 时与 operator< 不匹配

我有以下代码:

当我尝试编译时出现以下错误但不知道为什么?

0 投票
0 回答
260 浏览

c++ - 在自然语言处理中使用 boost::iterator_range

我的问题与自然语言处理 (NLP) 和将输入字符串分块成逻辑组有关。

为了简化事情,我所拥有的是一个 Token 数据结构的向量,其中每个都包含一个“标签”字符串值等。

我还形成了一个串联的“标签”值字符串,该字符串取自向量中的每个标记,如下所示:

我只对形成 JJ(形容词)和 NN(名词)实例的块感兴趣,因此对于上面的 pos_tags 示例,将有两个匹配的块:

“JJ NN NN”,“JJ NN”

是否可以在 pos_tags 字符串上运行一种正则表达式,以便每个正则表达式匹配代表输入令牌集 (input_tokens) 中的令牌范围?换句话说,形成的每个块都不是一个字符串,而是由一个开始/结束迭代器表示。

理想情况下,我想将找到的匹配存储为 boost::iterator_range 的向量,其中每个范围代表找到的每个块的开始/结束,如下所示:

我希望这是有道理的。我不一定要寻找完整的代码,而是提示如何以这种方式使用正则表达式(我是新手)。

0 投票
1 回答
204 浏览

stl - 使用 stl 和 boost 将两个向量转换为元组向量

我有

我想得到

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

我不确定如何进一步进行。一种方法是我可以在http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples中制作一个函子作为 zip_func但我不想写额外的代码,我想使用 lambda。有什么想法吗?

0 投票
2 回答
117 浏览

c++ - 在不输入整个容器定义的情况下引用迭代器的类型名称的有效方法?

有没有比键入更有效的方法来引用容器迭代器的类型名

每次我需要迭代器?

当然,还有

但是为每个容器引入 typedef 并没有让我觉得它是非常易读的代码。作为 C++ 的新手,并假设一个人通常会引用他们想要使用的容器 - 是否有类似的东西

或者我缺少的任何其他明显的捷径?

0 投票
1 回答
815 浏览

c++ - 自定义容器的自定义迭代器

我正在设计一个网格容器,表示为一维数组(模板化)。我在这里发布了代码的摘录,实际上还有更多内容。它在机器人应用程序中用作滚动占用网格,其中每个单元代表世界的一小块区域。

我经常对该网格执行的一项操作是遍历所有单元格并检索它们的世界坐标:

我想要一个迭代器来存储所有这些:单元格、它的 rc 坐标和它的 xy 坐标。

在网上大量的答案和教程之后,我想出了以下实现,它有效。但是对我来说似乎有点笨拙,出于学术考虑,我想让它看起来更好。STL兼容性也很好。

然后在我的网格类中:

同样,这可行,但我觉得它有点笨拙(参见迭代器代码中的注释),我想知道如何改进它。我看到很多关于使用 boost 迭代器外观或适配器的帖子,但我不知道如何使其适应我的情况。

0 投票
2 回答
3924 浏览

c++ - 为什么 boost filter_iterator 有奇怪的 make_filter_iterator 函数?

经过一番痛苦后,我设法将这个最小的 boost filter_iterator 示例拼凑在一起

它工作得很好,但我想知道为什么 make_filter_iterator 需要numbers.end()?那样使用它可能是错误的,我从 C 数组示例中猜测它:http:
//www.boost.org/doc/libs/1_53_0/libs/iterator/example/filter_iterator_example.cpp

0 投票
2 回答
280 浏览

c++ - 如何使用 boost 复制成员访问权限

我有一个 As with 的容器

容器提供了迭代器,我们可以在这个例子中假设它是一个 std::vector。所以:

现在我想将 A::f 提供的值复制到第二个容器中

尽管我可以简单地进行迭代,但作为练习,我尝试使用 boost bind / boost 迭代器来解决这个问题。到目前为止,我尝试的是:

任何人都知道如何做到这一点?

0 投票
1 回答
505 浏览

c++ - 映射的间接迭代器>

我正在尝试实现map<T, shared_ptr<U>>“删除”的迭代器shared_ptr,即取消引用pair<T, U&>. 我需要这个来使我的包装器适应map基于范围的 for 循环。

boost::indirect_iterator似乎是为这种需要而设计的东西。我试过这个:

由于要求,这不起作用indirect_iterator

表达式 *v,其中 v 是 iterator_traits::value_type 的对象,应该是有效的表达式并且可以转换为引用。

是否可以boost::indirect_iterator用于此任务?如果没有,我可以这样做boost::iterator_adaptor吗?

0 投票
1 回答
1354 浏览

c++ - 如何使用 const_iterator 公开 C++ 类

我正在使用Boost.Python来公开第 3 方 C++ API。

我来的头文件声明了一个可迭代类(hasbeginend方法),以及一个用于进行迭代的自定义迭代器类:-

我创建了从这些派生的最小包装类:-

还有 Boost.Python 声明:-

这里唯一的奇怪之处似乎是const_iteratortypedef 的使用。这在 Boost.Python迭代器文档中有所描述,据我所知,它所需要的只是的模板参数const中的限定符。iteratorIE

但是,这会导致以下编译器错误,在 Linux x86_64 上使用 GCC 4.7.2:-

应该如何暴露这样一个可迭代的类?

干杯,亚历克斯