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

c++ - 需要有关 BOOST_FOREACH/编译器错误的帮助

我知道应该最后归咎于 boost 或编译器,但我在这里看不到另一种解释。我正在使用 msvc 2008 SP1 和 boost 1.43。

在以下代码片段中,执行永远不会离开第三个BOOST_FOREACH 循环

迭代器代码:

一些 ASM 的乐趣:

很容易看出迭代器句柄缓存在 EBP 中,尽管调用了迭代器 operator++() 函数,但它永远不会增加。
我已将 Itarator 实现替换为源自 std::iterator 的实现,并且问题仍然存在,因此这不是 iterator_facade 错误。此问题仅存在于 msvc 2008 SP1 x86 和 amd64 发行版本上。在 msvc 2008 上构建调试,在 msvc 2010 和 gcc 4.4 (linux) 上构建调试/发布工作正常。此外,BOOST_FOREACH 块必须精确重复 10 次。如果重复9次,一切正常。

我猜由于 BOOST_FOREACH 使用了模板技巧(const auto_any),编译器假定迭代器句柄是常量并且不再读取它的实际值。

我很高兴听到我的代码是错误的,更正它并继续使用 BOOST_FOREACH,这是我非常发现的(与 BOOST_FOREVER 相对:)。

可能与:为什么 BOOST_FOREACH 有时不适用于 C++ 字符串?

编辑:

我已经准备了重现问题的简化项目。没有模板,没有默认参数,什么都没有。在这里获取:http: //yabcok.nazwa.pl/ugly3.zip

0 投票
3 回答
1205 浏览

c++ - 提升每个问题

这无法遵守:错误 C2440:“正在初始化”:无法从“std::pair<_Ty1,_Ty2>”转换为“lp_type &”

当我在元素类型中有','时,boost doc说我可以使用typedef或预定义一个var;但是当我想获得参考时该怎么办?

0 投票
1 回答
2433 浏览

c++ - 在 Ptr_Vector 上提升 FOR_EACH?

我目前正在尝试学习一些 Boost 库。我目前正在做我想这将是一个未来的家庭作业项目(学期还没有开始)。但是,这个问题不是关于作业问题,而是关于 Boost。

代码:

BOOST_FOREACH 用于使用与上面完全相同的代码处理法线向量。由于我已经开始使用 ptr_vectors 我得到了错误:

error C2440: '=' : cannot convert from 'Bid' to 'Bid *'

让我相信 ptr_vector 以某种方式掩盖了 foreach 方法的指针。

如果我改为写

我得到四个类型的错误

error C2819: type 'Bid' does not have an overloaded member 'operator ->'

这很糟糕,因为我知道出价是一个指针。

我怎样才能BOOST_FOREACH正确地迭代ptr_vectors

0 投票
1 回答
2101 浏览

c++ - 如何用 BOOST_FOREACH 枚举 BOOST_ENUM?

有人可以解释一下如何使用 BOOST_FOREACH 枚举 BOOST_ENUM 吗?下面的例子表明我让它与 std::for_each 一起工作,但不能与 BOOST_FOREACH 一起工作。

示例代码:

提前谢谢了!

编辑:如答案中所述,该代码确实适用于最新的 boost 代码库。

0 投票
2 回答
1347 浏览

c++ - Boost C++宏参数计数错误

在下面的一段代码中:

我收到此错误:

错误:宏“BOOST_FOREACH”传递了 3 个参数,但只需要 2 个

我只传递了 2 个参数,这是怎么回事?

0 投票
2 回答
2646 浏览

c++ - 在 BOOST_FOREACH 迭代容器时更改容器?

如果 BOOST_FOREACH 正在迭代的容器在 BOOST_FOREACH 范围内发生更改,会发生什么情况?

BOOST_FOREACH 是否“冻结”初始状态?

0 投票
2 回答
1470 浏览

c++ - 使用 BOOST_FOREACH 时如何测试向量中的最后一个元素?

我有一个迭代的向量。向量的最后一个元素是特殊情况,我想单独测试一下。例如,我可能会这样做:

我想用BOOST_FOREACH宏替换迭代器。可以对最终元素进行类似的测试吗?

0 投票
2 回答
2974 浏览

c++ - BOOST_FOREACH 迭代 boost::shared_ptr

我正在做与此项目类似的事情正确的 BOOST_FOREACH 用法?

但是,我返回的列表包含在 boost::shared_ptr 中。如果我没有在 BOOST_FOREACH 循环之前将列表分配给变量,我会在运行时崩溃,因为列表正在被破坏,因为它是临时的。

然后后来..

我希望能够使用上述内容而不必引入变量“myList”。这可能吗?

0 投票
3 回答
51980 浏览

c++ - Boost 1.46.1,属性树:如何遍历接收子ptree的ptree?

首先我要说我认为我知道应该怎么做,但是我的代码不会以我尝试的任何方式编译。我的假设基于这个空 ptree 技巧的官方示例。在那里你可以找到下一行:

这表明可以(或应该)从 ptree 中获取 subptree。

所以我假设我们可以通过 ptree 以BOOST_FOREACH这样的方式迭代:

但我得到下一个错误:

错误 1 ​​错误 C2440:“正在初始化”:无法从“std::pair<_Ty1,_Ty2>”转换为“const boost::property_tree::ptree &”

或者如果我尝试

我得到:

错误 1 ​​错误 C2039:“empty_ptree”:不是“boost::property_tree”的成员

那么我该怎么办:如何迭代 Boost Ptree 并获得子 Ptree?

更新: 我也试过这样的代码

这会编译,不会抛出任何异常,但不会抛出任何Sub data异常,它只是跳过这个循环。

更新 2:

嗯...我的 xml 中可能出了点问题 - 现在我使用该代码得到了正确的结果。

0 投票
4 回答
22401 浏览

c++ - How can I iterate over two vectors simultaneously using BOOST_FOREACH?

I'd like to replicate the following with BOOST FOREACH