fue*_*zig 0 c++ foreach stl function-pointers map
对于std::vector<double*> v;我可以double通过调用删除s
std::for_each(v.begin(), v.end(), (void(*)(void* a))operator delete);
Run Code Online (Sandbox Code Playgroud)
现在,如果我有std::map<int, double*> m;,我可以在不使用显式循环,增强或非标准STL扩展的情况下执行类似的操作吗?即什么是???在
std::for_each(m.begin(), m.end(), ???);
Run Code Online (Sandbox Code Playgroud)
Pup*_*ppy 10
不要打扰.std::map<int, std::unique_ptr<double>>.不再需要delete手动,你可以只是clear()地图.智能指针> 每次显式删除.
如果您使用的是C++ 11,则可以使用基于范围的for.
for(auto& pair : m) delete pair.second;
Run Code Online (Sandbox Code Playgroud)
如果您使用的是pre-C++ 11标准,则可以使用仿函数:
struct delete_second {
void operator()(std::pair<int, double*> p) { delete p.second; }
};
...
std::for_each(m.begin(), m.end(), delete_second());
Run Code Online (Sandbox Code Playgroud)