在较旧的c++中实现基于的范围
Achieve range-based for in older c++
我已经习惯了其他支持foreach循环或c++11中基于的范围的语言。我试图在c++98中模拟它。主要是因为我不喜欢每次需要对象时都使用(*it)
表示法。
假设我有这个c++11代码:
std::vector<int> myVec{...};
for(auto& outerLoopVar : myVec)
{
for(auto& innerLoopVar : myVec)
{
// do logic
}
}
有没有比这样做更好的方法在c++98中复制它?
std::vector<int> myVec;
// populate vector
for(std::vector<int>::iterator it1 = myVec.begin(); it1 < myVec.end(); it1++)
{
int& outerLoopVar = *it1;
for(std::vector<int>::iterator it2 = myVec.begin(); it2 < myVec.end(); it2++)
{
int& innerLoopVar = *it2;
// do logic
}
}
您想要使用boost foreach:
#include <boost/foreach.hpp>
BOOST_FOREACH(int& elem, myVec) {
// do logic
}
不是,我的意思是迭代器表示法非常标准,适用于多个容器和对象。这是一个值得使用的宝贵工具。我真的不知道你为什么不喜欢使用这种符号,但我认为如果你接受它会更好。
相关文章:
- 为左值和右值的包装器实现C++范围
- 基于范围的变换以实现正常循环
- 实现基于链表的堆栈的基于范围的 for 循环
- 避免在基于反向范围的for循环实现中悬挂参考
- 如何使用C++范围来实现numpy.ndindex?
- 范围修剪视图实现不适用于反向视图
- 实现编译检查以避免C++嵌套范围
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 为什么此范围为Vectors求和的实现速度较慢
- C 中的快速范围搜索实现
- 使用范围V3视图来实现begin()/end()方法
- 在最少的操作中实现字符串所有字符的相同频率。(所有字符的范围从'a'到"z")
- 如何实现我的自定义范围循环
- 实现Boost范围适配器REVERSED_IF
- GCC 4.4 不实现 C++11 范围循环.它还支持哪些其他范围循环语法
- 如何实现一个公开多个范围的容器
- 交换实现:效率和适用范围?
- 使用提升范围实现LINQ选择
- 如何使用范围 v3 范围实现平面地图
- 在C++中实现随机预言机(输出在范围内是随机的,但对于相同的输入输出是相同的)