Lorsque vous essayez le code suivant:Est-ce que l'algorithme parallel_for_each de la bibliothèque VS2010 Parallel Patterns Library (PPL) prend en charge 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);
});
Je reçois l'erreur de compilation suivante:
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ppl.h(2081): error C2440: '=' : cannot convert from 'const int *' to 'int *'
J'ai réussi à obtenir parallel_for_each travailler avec std::deque<>
, std::list<>
, std::vector<>
et std::map<>
. Je suis curieux de savoir comment le faire fonctionner pour std::set<>
ou pourquoi il ne serait pas pris en charge.
Je crois que c'est mon problème. J'ai confirmé ici: [Description de Visual Studio 2010 Service Pack 1] (http://support.microsoft.com/kb/983509) que sous "** Concurrency Runtime **" ils listent "Les conteneurs associés peuvent être utilisés avec le "parallel_for_each" fonction '. Une fois le VS2010-SP1 installé, je confirme que cela fonctionne. Le SP1 – ChetS
a résolu ce problème. Merci d'avoir répondu! – ChetS
Si vous utilisez une version ultérieure de l'IDE de Visual Studio, mais compilez avec VS 2010, vous devez toujours installer le SP1 pour VS2010. Les mises à jour pour les versions ultérieures de VS n'installent pas ce Service Pack. – ChetS