【发布时间】:2011-06-26 19:59:23
【问题描述】:
我最近写了一个简单的宏,因为我厌倦了为需要循环的每个向量输入相同的内容:
#define FORVEC(a,b) for(int b=0;b<a.size();b++)
所以我可以做类似的事情
vector<sometype> stuff
FORVEC(stuff,i)
{
stuff[i].dosomething();
}
我尽量避免使用宏,因为一位更有经验的程序员曾告诉我要尽可能避免使用宏。另外,我只是对如何使用函数(或任何需要的函数)完成它感到好奇,因为这是我想探索的领域。不一定要专门重新创建这个宏,虽然这将是一个好的开始,但是在定义它之后,我可以做一些类似的事情
mylooperfunction(param1,param2,param3)
{
//and now any code here would be run and looped in a way controlled by and defined in mylooperfunction
}
【问题讨论】:
-
你在使用 Boost,即
BOOST_FOREACH? -
我不是,但现在每当我研究我想做的事情时,似乎都会出现 BOOST 这个词,是时候开始学习了。另外,我想我的问题的第二部分不清楚。是否可以创建自己的函数来执行 std::for_each 或 BOOST_FOREACH 的功能?
-
C++0x 是一个选项吗?基于范围的 for 循环非常方便。
-
关于宏的注释:如果你想改变某些语法的工作方式,你需要一个宏。
BOOST_FOREACH也是一个宏。
标签: c++ templates function loops