初识Boost C++
第一次接触到boost c++这个东西。它是一个c++的标准的库,目前已经有10个boost c++ lib被包含到了c++标准库委员会技术报告里面,有希望成为以后c++标准的一部分。它是c++的一个准标准库,内部包含了许多C++标准的部分,主要的组成部分有字符串和文本处理,容器,迭代子(iterator),算法,函数对象和高阶编程,泛型编程,预处理元编程,并发编程,数学相关 ,纠错和测试,数据结
·
第一次接触到boost c++这个东西。它是一个c++的标准的库,目前已经有10个boost c++ lib被包含到了c++标准库委员会技术报告里面,有希望成为以后c++标准的一部分。
它是c++的一个准标准库,内部包含了许多C++标准的部分,主要的组成部分有字符串和文本处理,容器,迭代子(iterator),算法,函数对象和高阶编程,泛型编程,预处理元编程,并发编程,数学相关 ,纠错和测试,数据结构,输入输出,跨语言支持,内存相关,语法分析等等。这里我们主要用到数学相关,其他暂不做深入讨论。
1 下载与安装。
这个可以参考boost.org上getting started来做。
现在最新的boost.org版本是1.35.0。因为网络问题,我在国内的站点 上下了个早期的版本1.33.1,这个包是已经编译好了的。
2 测试
自己编写一个测试函数。这里只使用头文件。
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
gcc -I 把安装的/include子目录加入到include中 -o file source.cpp.
ps : inline function 类似于以前的宏定义,只是,在展开的时候会伴随有语法检查,这样以来可以避免频繁调用小程序,而来又可以避免宏展开不查错的弱点。
3 利用openMP来测试效果
目前的ubuntu 7.10预装的gcc版本大多为4.1. 需要手动升级。
sudo apt-get install gcc-4.2 g++-4.2 。注意装好之后,include和包文件都存放在/user/lib/gcc里面
4 测试。以下面的程序(test.cpp)作测试。
(如果要看串行的把OMP_NUM_THREADS设置为1)
#include <stdio.h>
#include <omp.h>
int main()
{
#pragma omp parallel
printf( "[%d] Hello/n ", omp_get_thread_num());
return 0;
}
编译gcc-4.2 -fopenmp -o test test.cpp
然后,在shell中输入./hello。如果双核可以看到2个hello
或者可以设置一下
$ export OMP_NUM_THREADS=8
$ ./hello
[1] Hello
[0] Hello
[3] Hello
[2] Hello
[7] Hello
[4] Hello
[6] Hello
[5] Hello
它是c++的一个准标准库,内部包含了许多C++标准的部分,主要的组成部分有字符串和文本处理,容器,迭代子(iterator),算法,函数对象和高阶编程,泛型编程,预处理元编程,并发编程,数学相关 ,纠错和测试,数据结构,输入输出,跨语言支持,内存相关,语法分析等等。这里我们主要用到数学相关,其他暂不做深入讨论。
1 下载与安装。
这个可以参考boost.org上getting started来做。
现在最新的boost.org版本是1.35.0。因为网络问题,我在国内的站点 上下了个早期的版本1.33.1,这个包是已经编译好了的。
2 测试
自己编写一个测试函数。这里只使用头文件。
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
gcc -I 把安装的/include子目录加入到include中 -o file source.cpp.
ps : inline function 类似于以前的宏定义,只是,在展开的时候会伴随有语法检查,这样以来可以避免频繁调用小程序,而来又可以避免宏展开不查错的弱点。
3 利用openMP来测试效果
目前的ubuntu 7.10预装的gcc版本大多为4.1. 需要手动升级。
sudo apt-get install gcc-4.2 g++-4.2 。注意装好之后,include和包文件都存放在/user/lib/gcc里面
4 测试。以下面的程序(test.cpp)作测试。
(如果要看串行的把OMP_NUM_THREADS设置为1)
#include <stdio.h>
#include <omp.h>
int main()
{
#pragma omp parallel
printf( "[%d] Hello/n ", omp_get_thread_num());
return 0;
}
编译gcc-4.2 -fopenmp -o test test.cpp
然后,在shell中输入./hello。如果双核可以看到2个hello
或者可以设置一下
$ export OMP_NUM_THREADS=8
$ ./hello
[1] Hello
[0] Hello
[3] Hello
[2] Hello
[7] Hello
[4] Hello
[6] Hello
[5] Hello
更多推荐
已为社区贡献1条内容
所有评论(0)