rpr*_*ero 1 c++ parallel-processing tbb
我有一个vector<int> foo和一个函数float bar(int)。使用algorithms图书馆,我可以填充vector<float> quux有
transform(foo.begin(), foo.end(), quux.begin(), bar);
Run Code Online (Sandbox Code Playgroud)
我的foo函数碰巧很慢,我希望使用 TBB 库跨多个线程并行处理此代码。我认为这将是一个理想的情况,因为所有操作都是独立的。但是,似乎没有parallel_transform算法。我在parallel_for算法中看到的每个示例都将数据放回到原始数组中,这是我无法做到的,因为我正在更改类型。
您可以使用对目标的引用来实现它。示例代码:
std::vector<float> quux(foo.size());
parallel_for(size_t(0), foo.size(), [&foo,&quux] (size_t i) {
quux[i] = bar(foo[i]);
});
Run Code Online (Sandbox Code Playgroud)