わかりました、私はここでばかげた間違いをしたと思います。DisplayDevice3dのリストがあり、各DisplayDevice3dにはDisplayMode3dのリストが含まれています。DisplayMode3dを持たないDisplayDevice3dのリストからすべてのアイテムを削除したいと思います。私はそれを行うためにラムダを使用しようとしています、すなわち:
// If the device doesn't have any modes, remove it.
std::remove_if(MyDisplayDevices.begin(), MyDisplayDevices.end(),
[](DisplayDevice3d& device)
{
return device.Modes.size() == 0;
}
);
MyDisplayDevicesの6つのDisplayMode3dのうち、ModesコレクションにDisplayMode3dが含まれているのは1つだけですが、リストから削除されるものはありません。
私はここでどんな多くの間違いを犯しましたか?
編集:
ああ、私の間違いは、std :: remove_ifの代わりにMyDisplayDevices.remove_ifを使用する必要があるということでしたが、以下の答えはstd :: remove_if:pの使用に対して正しいです。
MyDisplayDevices.remove_if( [](DisplayDevice3d const & device)
{
return device.Modes.size() == 0;
});