TBB parallel_for编译错误

时间:2016-07-19 14:24:53

标签: c++ templates c++11 tbb

我想使用TBB parallel_for我将此问题用于我的代码测试

<table width="outside container width here">
   <tbody>
     <tr>
       <table style="apply your styles here, background colors, paddings etc (do not use margins, poorly supported.)" height="height of inner container" width="inner container width here" align="however you want it aligned">
         <tbody><tr><td><a href="#link">Your button actually goes here</a></td></tr></tbody>
       </table>
     </tr>
   </tbody>
 </table>

我的编译行是:

JSON

我的编译错误是:

input

你有想法解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

您的代码问题是0的类型为int,而n的类型为std::size_t。存在不匹配,您需要进行转换。解决方案如下:

tbb::parallel_for(static_cast<std::size_t>(0), n, [&](std::size_t i)) {
    // other code    
}

另一种解决方案是使用tbb::blocked_range<T>指定范围,即tbb::parallel_for的另一个重载。

tbb::parallel_for(tbb::blocked_range<std::size_t>(0, n),
    [&](const tbb::blocked_range<std::size_t> &range) {
        for (auto i = range.begin(); i != range.end(); ++i)
            const auto &tuple = commands[i];
    } );

显然,第一种解决方案更简洁。但是,第二个更灵活。因为对于第一个,你只能指定循环体,而对于第二个,你可以在循环体外做更多的事情。