fork download
  1. #include <boost/range/numeric.hpp>
  2. #include <boost/function_output_iterator.hpp>
  3. #include <iostream>
  4. #include <string>
  5. #include <vector>
  6.  
  7. template <class Container>
  8. struct ignore_insert {
  9. // Ignore any insertions that don't match container's type
  10. Container& cont;
  11. ignore_insert(Container& c) : cont(c) {}
  12. void operator() (typename Container::value_type i) {
  13. cont.push_back(i);
  14. }
  15. template <typename T>
  16. void operator() (T) {}
  17. };
  18.  
  19. template <class Container>
  20. auto ignoreinsrtr(Container& cont) {
  21. return boost::make_function_output_iterator(ignore_insert<Container>{cont});
  22. }
  23.  
  24. int main() {
  25. std::vector<int> v { 0, 1, 2, 3 }; // any generic STL container
  26. std::vector<std::string> result;
  27. boost::adjacent_difference(v, ignoreinsrtr(result),
  28. [](int a, int b){ return std::to_string(a+b); });
  29. for (auto i : result)
  30. std::cout << i << ", ";
  31. std::cout << '\n';
  32. return 0;
  33. }
  34.  
  35.  
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
1, 3, 5,