fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <memory>
  4. #include <algorithm>
  5.  
  6. struct someType {
  7. int value;
  8. someType(int val) : value(val) {}
  9. };
  10.  
  11. int main() {
  12. std::vector<int> condition;
  13. std::vector<std::shared_ptr<someType>> container;
  14.  
  15. condition.push_back(0);
  16. condition.push_back(1);
  17. condition.push_back(0);
  18.  
  19. container.emplace_back(std::make_shared<someType>(1));
  20. container.emplace_back(std::make_shared<someType>(2));
  21. container.emplace_back(std::make_shared<someType>(3));
  22.  
  23. container.erase(
  24. std::remove_if(
  25. container.begin(), container.end(),
  26. [&](const std::shared_ptr<someType> &s) {
  27. return condition[ &s - &(*container.begin()) ] == 1;
  28. }
  29. ),
  30. container.end()
  31. );
  32.  
  33. for(auto &s : container)
  34. std::cout << s->value << std::endl;
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
1
3