问题标签 [boost-foreach]

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 回答
805 浏览

c++ - 如何通过 C++ 中的 BOOST_FOREACH 使我的类可迭代?

编辑:我放弃了!我现在只是简单地使用for (string& word : sentence) { .. }BOOST_FOREACH是绝望的。谢谢你。

我读过这个这个,他们根本没有帮助。特别是我想问第二个链接。为什么必须在命名空间下定义一些奇怪的结构boost?我想要启用 BOOST_FOREACH 的类是在我自己的命名空间中定义的。如果我在 中定义我的迭代器,我如何访问该类的数据namespace boost { .. }?这是没有意义的。我不知道为什么IEnumerable在 C++ 中找到 的等价物花了我这么多时间!不boost应该节省我的时间吗?

谁能告诉我迭代这个类的最巧妙的方法:

使用此代码:

谢谢。

0 投票
3 回答
1277 浏览

c++ - 遍历右值容器

以下代码是否导致未定义的行为?

如果未定义,修复它的好方法是什么?如果我使用 c++11 range-for 循环而不是 BOOST_FOREACH 会怎样?

0 投票
1 回答
223 浏览

c++ - 为什么地图上的 BOOST_FOREACH 仅适用于 typedef

我试图通过map<int, int>元素编写一个简单的循环,我想知道为什么我使用的第一种语法不起作用/编译?

我写的第一个版本如下,它不能与 VS'2008 / boost 1.44 版本一起编译:

现在,如果我像下面这样重写代码,编译就可以了,但是为什么呢?

0 投票
1 回答
809 浏览

c++ - 从 CRTP 自动定义访问者(CRTP 使用 boost foreach 和 boost 变体)

我需要实现对实现相同接口的对象向量的有效访问。到目前为止,我一直在使用虚函数的继承:接口被定义为具有纯虚函数的抽象类,并且每个对象类都实现了虚函数。对象向量只是抽象类上的指针向量(参见消息末尾的动态访问示例)。

我需要更快地访问对象集合。因为我在编译时知道所有可能的对象类,所以我使用 boost::variant 来实现对象集合(即 boost::variant 的向量)。我需要访客计划的额外定义才能通过集合。为了明确表示所有对象都实现相同的接口,我使用 CRTP 来获得静态继承:接口是 CRTP 抽象,并且每个对象类都派生自模板化的 CRTP 抽象类。

这是 CRTP 实现的示例。该接口简单地定义了两个函数f()g(double). 有两个派生类C1C2实现接口(具有相同的行为)。

这段代码有效,并且比使用动态继承的代码效率高 15 倍(有关使用动态的代码,请参见消息末尾)。对于不熟悉 CRTP 的人来说,代码阅读起来稍微困难一些,但维护或编写起来并不困难。由于 CRTP 的接口是显式的,因此访问者实现相当琐碎,但冗长,难以理解和使用。

我的问题很简单:是否可以从 CRTP 界面自动定义访问者。我想避免 and 的额外定义f_visitorg_visitor并获得更易读的外观:

谢谢你的帮助。对于感兴趣的读者,这里是使用虚拟继承的相同代码。

0 投票
1 回答
61 浏览

c++ - 解决问题 # C++98 在使用 Boost 库 1.53 或 1.56 的代码中有效使用“for_each”

我已经问过这个问题了。我想知道是否有任何使用 boost::for_each 和 boost::bind 的解决方案

这个问题已经回答了,这就是我在这里创建另一个问题的原因;只为好奇。谢谢。

0 投票
2 回答
72 浏览

c++ - 这会导致未定义的行为吗?

地址消毒剂在抱怨。

0 投票
1 回答
2731 浏览

c++ - 将 get_value 与 Boost 的属性树一起使用时遇到问题

我必须用 Boost 编写一个 XML 解析器。但是我有一些麻烦。我可以毫无问题地访问节点名称,但由于某种原因,我无法使用 get_value 访问标签内的属性,这应该可以立即工作。也许我的代码中有一个我没有发现的错误?看一看:

所以基本上我忽略和标记,当我在参数组标记中时,我会更深入,当我在参数标记中时,我会恢复数据来做事。但是,我无法正确获取“名称”。

这是我在最后扫描的那种行else if

显示的std::cout << name内容如下:

这显然不是我要的。

我究竟做错了什么?任何帮助将不胜感激。

0 投票
1 回答
201 浏览

c++ - Cannot get BOOST_FOREACH to work with my custom class

I implemented a trivial class MyClass that has an array allocated with new inside it (I know that I could use a STL container, but I'm trying to understand how they work). I also created an iterator subclass, able to iterate on all the elements of a MyClass object:

While the iterator works if I use it this way:

It doesn't work if I try to use it with BOOST_FOREACH:

These are the errors that I get:

enter image description here

0 投票
2 回答
111 浏览

boost - 无法迭代函数返回的不可复制容器

我不确定标题,因为我不确定问题来自容器的“可复制性”。我尝试了一切,但我无法摆脱这个错误。

这是我的代码的简化版本(请不要挑战类设计,我真的很想将最终使用的语法保留在 BOOST_FOREACH 中):

编译器抱怨没有 MyContainer::MyContainer(const MyContainer&) 的复制构造函数。我也有:错误:没有匹配函数调用'MyContainer::MyContainer(boost::foreach_detail_::rvalue_probe >::value_type)'</p>

我遵循可扩展性提示: http: //www.boost.org/doc/libs/1_58_0/doc/html/foreach/extensibility.html#foreach.extensibility.making__literal_boost_foreach__literal__work_with_non_copyable_sequence_types

但是,使

不能解决问题。也不定义函数

或专门化模板结构

对于 MyContainer (事实上,我如何将这个模板专门用于模板类型?)

最后一个“提示”:如果我从任何地方删除互斥锁和锁(我只是将向量传递给 GetContainer 和 MyContainer),它就可以工作。但如果我做它不起作用

(我希望它应该如此,所以我不确定我的问题出在 BOOST_FOREACH 上,但可能是因为我用 getter 返回了 MyContainer 的副本?)

如果您在此处阅读我,我将感谢您,并提前感谢您的帮助。

0 投票
1 回答
71 浏览

c++ - 获取指向当前 BOOST_FOREACH 元素的指针

给出以下简单代码:

我的问题是,ptrToMyClass 现在是指向时间对象还是指向列表中的真实对象。如果是第一种情况,是否有某种方法可以获取指向列表中对象的指针,而不是 BOOST_FOREACH 循环创建的时间变量?