• VS编译环境中TBB配置和C++中lambda表达式


    TBB(Thread Building Blocks),线程构建模块,是由Intel公司开发的并行编程开发工具,提供了对Windows,Linux和OSX平台的支持。


    TBB for Windows 官方下载链接: 点击打开链接




    TBB的VS编译环境的配置步骤:


    1.  在系统的用户变量和系统变量里加入TBB的dll路径:

    右击我的电脑->属性->高级系统设置->环境变量,在用户变量和系统变量里的path变量(没有则新建一个)里分别加入TBB的dll所在路径。我解压出来的TBB文件路径是 “D:SoftwareTBB” ,所以在path里加入路径 “D:SoftwareTBB bb2017_20161128ossinia32vc11” 


    2.  在VS工程里新建一个属性页,在属性页的VC++目录->可执行文件目录里添加路径:D:SoftwareTBB bb2017_20161128ossinia32vc11


    3. 在属性页的VC++目录->包含目录里添加路径: D:SoftwareTBB bb2017_20161128ossinclude


    4. 在属性页的VC++目录->库目录里添加路径:D:SoftwareTBB bb2017_20161128osslibia32vc11


    经过以上4个步骤,TBB的配置就完成了,用一个简单的TBB并行程序验证一下是否配置成功:

    #include <tbb/tbb.h>
    #include <iostream>
    
    using namespace std;
    using namespace tbb;
    
    int main()
    {
    	parallel_for(0, 10, [](int num) {cout << num << ": Hello TBB!" << endl; });
    	getchar();
    	return 0;
    }

    如果按4个步骤正确配置了,应该有如下杂乱的输出,说明配置OK:



    C++中lambda表达式


    TBB程序中的parallel_for模板用到了lambda表达式,lambda表达式是C++11新增的特性,允许通过lambda表达式构造匿名函数。匿名函数适合于程序中一些可能只会被调用一次的小函数,把这些小函数重构为匿名函数可以使程序更加简洁优雅。

    两个简单的lambda表达式的定义和使用示例:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	auto func1 = []() {cout << "Hello Lambda!" << endl; };
    	func1();
    	auto func2 = [](int num) {return num + 5; };
    	cout << func2(5) << endl;
    	getchar();
    	return 0;
    }


    这里定义了一个lambda表达式(函数)func1,auto用来自动获取func1函数的返回值。符号“[ ]”通知编译器接下来要定义的是一个匿名函数,符号“()”里定义传入匿名函数的参数列表,这里为空,在随后的大括号内是函数的具体实现。


  • 相关阅读:
    CODEFORCES-CONTEST653-D. Delivery Bears
    CodeForces 1244C-exgcd?
    洛谷P3948
    L2-010 排座位 (25 分) (最短路)
    L2-008 最长对称子串 (25 分) (模拟)
    L2-007 家庭房产 (25 分) (并查集)
    L2-005 集合相似度 (25 分) (STL——set)
    L2-002 链表去重 (25 分) (模拟)
    L2-001 紧急救援 (25 分) (最短路+路径打印)
    hiho 1098 最小生成树二·Kruscal算法 (最小生成树)
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411879.html
Copyright © 2020-2023  润新知