std :: remove_if - лямбда, не удаляющая ничего из коллекции

Хорошо, полагаю, я сделал здесь глупую ошибку. У меня есть список DisplayDevice3d, и каждый DisplayDevice3d содержит список DisplayMode3d. Я хочу удалить все элементы из списка DisplayDevice3d, у которых нет DisplayMode3d. Я пытаюсь использовать лямбда-выражение для этого, то есть: [

    // If the device doesn't have any modes, remove it.

  std::remove_if(MyDisplayDevices.begin(), MyDisplayDevices.end(),
   [](DisplayDevice3d& device) 
   { 
    return device.Modes.size() == 0; 
   }
  ); 

] Несмотря на то, что из 6 DisplayMode3d в MyDisplayDevices только 1 имеет DisplayMode3d в своей коллекции Modes, ничего не удаляется из списка.

Какую глупую ошибку я здесь совершил?

Edit:

Ах, хорошо, моя ошибка заключалась в том, что я должен был использовать MyDisplayDevices.remove_if вместо std :: remove_if, однако ответы ниже верны для использования std: : remove_if: p.

MyDisplayDevices.remove_if( [](DisplayDevice3d const & device) 
                            { 
                                return device.Modes.size() == 0; 
                            });
43
задан Saurav Sahu 10 November 2016 в 08:01
поделиться