尝试以下代码时:
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.0\VC\include\ppl.h(2081): error C2440: '=' : cannot convert from 'const int *' to 'int *'
我设法让parallel_for_each与std::deque<>
,std::list<>
,std::vector<>
和std::map<>
一起使用。
我很好奇如何让它适用于std::set<>
或为什么不支持它。
答案 0 :(得分:2)
我编译的示例代码没有错误。
我添加了以下内容:
#include <ppl.h>
#include <concurrent_vector.h>
您安装了SP1吗?
答案 1 :(得分:0)
如果由于某种原因,没有Concurrency::concurrent_set
,那么一定要使用a
Concurrency::concurrent_map<T, unused_type>
理想情况下,unused_type
将以这种方式填充,std::pair<T, unused_type>
可以实现空基类优化。测试和分析。如果确实如此,那你就已经完成了。
两个四件事
concurrent_map
具有std::map
语义concurrent_map
使用对