/Src/Dependencies/Boost/libs/iterator/example/node_iterator3.cpp

http://hadesmem.googlecode.com/ · C++ · 43 lines · 32 code · 7 blank · 4 comment · 4 complexity · a19120bcd83e338a4d65bb0f92057232 MD5 · raw file

  1. // Copyright David Abrahams 2004. Use, modification and distribution is
  2. // subject to the Boost Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include "node_iterator3.hpp"
  5. #include <string>
  6. #include <memory>
  7. #include <iostream>
  8. #include <algorithm>
  9. #include <boost/mem_fn.hpp>
  10. #include <cassert>
  11. int main()
  12. {
  13. std::auto_ptr<node<int> > nodes(new node<int>(42));
  14. nodes->append(new node<std::string>(" is greater than "));
  15. nodes->append(new node<int>(13));
  16. // Check interoperability
  17. assert(node_iterator(nodes.get()) == node_const_iterator(nodes.get()));
  18. assert(node_const_iterator(nodes.get()) == node_iterator(nodes.get()));
  19. assert(node_iterator(nodes.get()) != node_const_iterator());
  20. assert(node_const_iterator(nodes.get()) != node_iterator());
  21. std::copy(
  22. node_iterator(nodes.get()), node_iterator()
  23. , std::ostream_iterator<node_base>(std::cout, " ")
  24. );
  25. std::cout << std::endl;
  26. std::for_each(
  27. node_iterator(nodes.get()), node_iterator()
  28. , boost::mem_fn(&node_base::double_me)
  29. );
  30. std::copy(
  31. node_const_iterator(nodes.get()), node_const_iterator()
  32. , std::ostream_iterator<node_base>(std::cout, "/")
  33. );
  34. std::cout << std::endl;
  35. return 0;
  36. }