VS2010并行模式库(PPL)parallel_for_each算法是否支持std :: set<>?

时间:2011-05-23 22:28:34

标签: c++ visual-studio-2010 concurrency set std

尝试以下代码时:

        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<>或为什么不支持它。

2 个答案:

答案 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>可以实现空基类优化。测试和分析。如果确实如此,那你就已经完成了。

两个四件事

  1. 我知道这只是一点点蹩脚
  2. 假设concurrent_map具有std::map语义
  3. concurrent_map使用对
  4. 的小假设
  5. 我实际上并没有使用PPL(我使用GNU libgomp with parallel mode