我想用一个
for_each
循环我的代码,但我得到以下错误:
cannot convert parameter 1 from 'std::pair<_Ty1,_Ty2>' to 'std::pair<_Ty1,_Ty2> &'
这是违规代码:
typedef stdext::hash_map<
std::string, std::list<DefaultTestContext>
> CompleteTestList;
static void RunMappedTests(pair<string, list<DefaultTestContext>>& tests)
{
RunAllTestsInList(tests.second);
}
void RunTestsInParallel(CompleteTestList& testList)
{
for_each(testList.begin(), testList.end(), RunMappedTests);
}
当然,最简单的解决方法是将runmappedts的参数更改为按值传递,而不是按引用传递。不幸的是,在这种情况下,它会带来巨大的性能损失。它必须复制一个字符串和一个约64字节数据块的列表。复制的数量是可怕的。我还需要修改地图中的原始元素。
以前有人处理过这个吗?有什么我不知道的简单方法吗?