當嘗試下面的代碼:VS2010並行模式庫(PPL)parallel_for_each算法是否支持std :: set <>?
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<>
工作,或者爲什麼它不被支持。
我相信這是我的問題。我已經在這裏證實:[Description of Visual Studio 2010 Service Pack 1](http://support.microsoft.com/kb/983509)在'** Concurrency Runtime **'下列出'相關容器可以與「parallel_for_each」功能「。一旦我安裝了VS2010-SP1,我會確認它的工作原理。 – ChetS 2011-05-26 00:14:37
SP1解決了這個問題。感謝你的回答! – ChetS 2011-05-27 05:52:24
如果您使用的是Visual Studio IDE的更高版本,但是使用VS 2010進行編譯,則仍然需要安裝VS2010的SP1。 VS的更高版本的更新不會安裝此Service Pack。 – ChetS 2016-08-17 20:20:13