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