fork(2) download
  1. #include <iostream>
  2. #include <iterator>
  3. #include <list>
  4.  
  5. template<class FwdIt>
  6. FwdIt remove_nth(FwdIt p, FwdIt q, size_t const n)
  7. {
  8. for (size_t i = 0; i < n && p != q; ++i, ++p) { }
  9. if (p == q) {
  10. return q;
  11. }
  12.  
  13. auto lastValidIterator = p++;
  14. for (; p != q; ++p) {
  15. std::iter_swap(lastValidIterator, p);
  16. lastValidIterator = p;
  17. }
  18.  
  19. return lastValidIterator;
  20. }
  21.  
  22. int main()
  23. {
  24. std::list<int> ls = { 1, 2, 3, 4, 5 };
  25. ls.erase(remove_nth(ls.begin(), ls.end(), 2));
  26. std::copy(ls.begin(), ls.end(), std::ostream_iterator<int>(std::cout, "\n"));
  27.  
  28. return 0;
  29. }
Success #stdin #stdout 0s 15224KB
stdin
Standard input is empty
stdout
1
2
4
5