fork download
  1. #include <iostream>
  2. #include <list>
  3. #include <vector>
  4.  
  5. std::vector< std::list<int> > & split( std::list<int> v,
  6. int delim, std::vector< std::list<int> >& elems) {
  7.  
  8. int i = 0;
  9. auto it = v.begin();
  10.  
  11. while ( it != v.end()) {
  12. std::list<int> l;
  13. auto it3 = l.begin();
  14. while ( it != v.end() && *it < delim) {
  15. l.splice( it3, v, it);
  16. it = v.begin();
  17. }
  18. if( it != v.end()) {
  19. l.splice( it3, v, it);
  20. it = v.begin();
  21. }
  22. elems.push_back( l);
  23. }
  24. return elems;
  25. }
  26.  
  27.  
  28. std::vector< std::list<int> > split( const std::list<int> &v, int delim) {
  29. std::vector< std::list<int> > elems;
  30. split( v, delim, elems);
  31. return elems;
  32. }
  33.  
  34. int main() {
  35.  
  36. std::list<int> v = { 1, 2, 3, 503, 5, 6, 502, 7, 510, 3, 500, 5, 9};
  37. std::vector< std::list<int> > vl;
  38. vl = split( v, 500);
  39.  
  40. int i = 0;
  41. while( i < vl.size()) {
  42. std::list<int>::const_iterator it = vl[ i].begin();
  43. while( it != vl[ i].end())
  44. std::cout << *it++;
  45. ++i;
  46. }
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
123503565027510350059