能力值:
( LV8,RANK:130 )
2 楼
#define FOREACH BOOST_FOREACH
感觉意义不大 语法糖一样的东西
能力值:
( LV3,RANK:20 )
3 楼
有问题哦,char *ch("Hello")吧
能力值:
( LV9,RANK:170 )
4 楼
居然没一个人肯认真做?
能力值:
( LV4,RANK:50 )
5 楼
不会做
...
能力值:
( LV2,RANK:10 )
6 楼
感受到了Boost的强大!其他的都是浮云
能力值:
( LV15,RANK:670 )
7 楼
BOOST_FOREACH 是对的,但是在VC6下无法编译通过,宏重定义被视为错误。
#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
#define FOREACH BOOST_FOREACH
void test()
{
const char * hello = "hello, world\n";
FOREACH( char ch, hello )
{
std::cout << ch;
}
int tbl[5] = {1,2,3,4,5};
FOREACH( int i, tbl )
{
std::cout << i << ' ';
}
std::cout << '\n';
std::vector<int> m; // also support std::list, std::deque
m.push_back(10);
m.push_back(20);
m.push_back(30);
FOREACH( int i, m )
{
std::cout << i << ' ';
if (i == 20) break;
}
}
/*
int main(int, char **, char **)
{
test();
return 0;
}
*/
能力值:
( LV8,RANK:130 )
8 楼
- -!!!
BOOST不支持古老的VC6编译器
能力值:
( LV3,RANK:20 )
9 楼
BOOST已有些变态,它的BOOST_FOREACH要使用循环嵌套来实现,有多大意义呢,VC2010已支持lambda表达式,std::for_each也可以使用lambda表达式,不需要先定义函数,个人感觉这种形式更好些。
能力值:
( LV15,RANK:670 )
10 楼
支持的,只是没有哪个编译器能全部支持 boost 的所有库。
能力值:
( LV8,RANK:130 )
11 楼
www.boost.org Version 1.45.0
Compilers Tested
Boost's primary test compilers are:
Linux:
GCC: 3.4.6, 4.2.4, 4.3.4, 4.4.3, 4.4.5, 4.5.1.
GCC, C++0x mode: 4.3.4, 4.4.3, 4.5.0.
Intel: 10.1, 11.0, 11.1
Pathscale: 3.2.
OS X:
GCC: 4.0.1, 4.2.1, 4.4
GCC, C++0x mode: 4.4.
Intel: 11.1
Windows:
Visual C++: 7.1, 8.0, 9.0 and 10.0. <<------
GCC, mingw: 4.3.3.
FreeBSD:
GCC: 4.2.1, 32 bit.
GCC: 4.2.1, 64 bit.
VC8/VC9可以完整编译BOOST所有库
能力值:
( LV8,RANK:130 )
12 楼
所以, 我觉得LZ这个题目没有意义, FOREACH由编译器实现更好.
用库实现的话, 又要使用各种各样的语言技巧 .
能力值:
( LV15,RANK:670 )
13 楼
[QUOTE=nevergone;914272]所以, 我觉得LZ这个题目没有意义, FOREACH由编译器实现更好.
用库实现的话, 又要使用各种各样的
语言技巧 .[/QUOTE]
我的 boost 库是 1.34.1
编译器也是根据ANSI C++标准写的。
能力值:
( LV3,RANK:20 )
14 楼
看不懂哦,自己太菜了饿
能力值:
( LV2,RANK:10 )
15 楼
怎么都扯到BOOST上去了....不是只要对FOREACH进行重载不就可以了.....
能力值:
( LV2,RANK:10 )
16 楼
菜鸟低见:这样的东西没什么意义,只是在阅读代码时似乎达到了效果。
能力值:
( LV2,RANK:10 )
17 楼
字符和容器可以实现,但是数组自动计算大小搞不定
能力值:
( LV2,RANK:10 )
18 楼
LZ能贴出你的代码吗,学习学习
能力值:
( LV12,RANK:270 )
19 楼
刚开始觉得问题并不算困难,用宏定义以及for和函数重载应该能搞定。
可是后来发现LZ把变量的声明放到了FOREACH的里面,变量的声明没办法放到函数参数中,所以不能直接define,目前还没想到该怎么处理,坐等高手解答……