BOOST_FOREACH and a vector
BOOST_FOREACH and a vector
我有一个场景向量, vector<Scene>
。是否正确地迭代元素的正确方法是什么?
例如:
BOOST_FOREACH(Scene scene, mScenes)
{
.....
}
宏是在向量上复制每个迭代的场景,还是在幕后使用参考?
所以与此不同:
BOOST_FOREACH(Scene& scene, mScenes)
{
.....
}
BOOST_FOREACH
的行为与您所告诉他的行为,通过价值,参考或const reference
您的第一个示例 dis 复制每个Scene
。最有可能的是,您想要第二个。使用第一个,您可以修改scene
,并且向量将不受影响。如果您没有修改向量,则应使用const Scene& scene
。如果是,请使用Scene &
。
请注意,使用C 11,您不需要使用BOOST_FOREACH(除了返回一对迭代器的一些Boost Libs除外)。
for(const Scene& scene: mScenes){}
适用于BOOST_FOREACH的相同规则:您很可能想使用const&amp;,很少&amp;,并且永远不会复制。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- 使用std::vector的OpenCL矩阵乘法
- Bjarne Stroustrup Book - Vector and For loop - 将不起作用
- C++ vector.begin() and vector[0]
- Boost mpl::vector and hana
- BOOST_FOREACH and a vector
- vector::push_back and std::move
- Natvis Visual Studio 2012 Boost Vector and Matrix
- vector::erase and reverse_iterator
- c++ mysqlpp::storequeryresult and std::vector
- STL vector: resize() and assign()
- std::vector::emplace_back and std::move
- C++ error: Double and 3d Vector
- Vector and push_back() behavior
- std::vector and std::min behavior
- std::vector and Constructors
- bad_alloc on vector.push() and vector.reserve()
- std::vector vs std::list for insertion frequency and dynamic