reverse_iterator_eg.rst 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. .. Copyright David Abrahams 2006. Distributed under the Boost
  2. .. 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. Example
  5. .......
  6. The following example prints an array of characters in reverse order
  7. using ``reverse_iterator``.
  8. ::
  9. char letters_[] = "hello world!";
  10. const int N = sizeof(letters_)/sizeof(char) - 1;
  11. typedef char* base_iterator;
  12. base_iterator letters(letters_);
  13. std::cout << "original sequence of letters:\t\t\t" << letters_ << std::endl;
  14. boost::reverse_iterator<base_iterator>
  15. reverse_letters_first(letters + N),
  16. reverse_letters_last(letters);
  17. std::cout << "sequence in reverse order:\t\t\t";
  18. std::copy(reverse_letters_first, reverse_letters_last,
  19. std::ostream_iterator<char>(std::cout));
  20. std::cout << std::endl;
  21. std::cout << "sequence in double-reversed (normal) order:\t";
  22. std::copy(boost::make_reverse_iterator(reverse_letters_last),
  23. boost::make_reverse_iterator(reverse_letters_first),
  24. std::ostream_iterator<char>(std::cout));
  25. std::cout << std::endl;
  26. The output is::
  27. original sequence of letters: hello world!
  28. sequence in reverse order: !dlrow olleh
  29. sequence in double-reversed (normal) order: hello world!
  30. The source code for this example can be found `here`__.
  31. __ ../example/reverse_iterator_example.cpp