copy_if带有其值也是std::pair的映射

我有一个inMap类型为map<double, pair<int, double>>.

我试图通过这样的方式过滤这张地图copy_if

map<double, pair<int, double>> outMap;
copy_if(inMap.begin(), inMap.end(), outMap.begin(), [](pair<double, pair<int, double>> item) {return (true) ;} // I have simplified the predicate 

但是,在编译时,我收到以下错误:

error: use of deleted function 'std::pair<const double, std::pair<int, double>>& std::pair<const double, std::pair<int, double>>::operator=(const std::pair<const double, std::pair<int, double>>&)

回答

a 的迭代器std::map不适合与 一起使用copy_if,因为该算法只是尝试分配整个值。但是, a 的迭代器的std::map值类型为std::pair<const K, V>,这意味着它不可复制赋值。

但是,您可以使用std::inserter来完成您想要的

std::copy_if(inMap.begin(), inMap.end(), std::inserter(outMap, outMap.end()), Predicate);


以上是copy_if带有其值也是std::pair的映射的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>