naraku9333

generic split

Dec 30th, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //generic container split
  8. template<typename Cont>
  9. vector<Cont> split(Cont cont, typename Cont::value_type delim)
  10. {
  11.     vector<Cont> r;
  12.     Cont c;
  13.     for(auto i : cont)
  14.     {
  15.         if(i != delim) c.push_back(i);
  16.         else
  17.         {
  18.             r.push_back(c);
  19.             c.clear();
  20.         }
  21.     }
  22.     if(!c.empty()) r.push_back(c);
  23.    
  24.     return r;
  25. }
  26.  
  27. int main() {
  28.     string s = "this is a test";
  29.     auto vr1 = split(s, ' ');
  30.     for(auto i : vr1)
  31.         cout << i << endl;
  32.        
  33.     cout << endl;
  34.    
  35.     vector<int> vi {1,2,3,4,5,9,3,2,1,9,8,7,6,5,9,4,5,6,7,8};
  36.     auto vr2 = split(vi, 9);
  37.     for(auto v : vr2)
  38.     {
  39.         for(const auto& i : v) 
  40.             cout << i;
  41.         cout << endl;
  42.     }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment