尝试以下代码时:
Concurrency::concurrent_vector<int> results_temp;
std::set<int > temp;
Concurrency::parallel_for_each(temp.begin(), temp.end(),[&](int p) {
results_temp.push_back(p);
});
我得到以下编译时错误:
1>C:Program Files (x86)Microsoft Visual Studio 10.0VCincludeppl.h(2081): error C2440: '=' : cannot convert from 'const int *' to 'int *'
我已经设法使parallel_for_each与std::deque<>
、std::list<>
、std::vector<>
和std::map<>
一起工作。我很好奇如何让它为std::set<>
工作,或者为什么不支持它。
为我编译的示例代码没有错误。
我添加了以下内容:
#include <ppl.h>
#include <concurrent_vector.h>
你安装了SP1吗?
如果出于任何原因,没有Concurrency::concurrent_set
,则无论如何使用Concurrency::concurrent_map<T, unused_type>
理想情况下,unused_type
将以这样的方式填充,即std::pair<T, unused_type>
可以空基类优化。测试并分析它。如果是这样,你就差不多完了。
两个四件事
- 我知道这只是有点蹩脚
- 假设
concurrent_map
具有std::map
语义 concurrent_map
使用对的次要假设- 我实际上并不使用PPL(我使用带有并行模式的GNU libgomp)