1 | */* * |

2 | * Copyright (c) Marshall Clow 2011-2012.* |

3 | |

4 | * Distributed under the Boost Software License, Version 1.0. (See accompanying* |

5 | * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)* |

6 | **/* |

7 | |

8 | */// \file copy_n.hpp* |

9 | */// \brief Copy n items from one sequence to another* |

10 | */// \author Marshall Clow* |

11 | |

12 | __#ifndef BOOST_ALGORITHM_COPY_N_HPP__ |

13 | __#define BOOST_ALGORITHM_COPY_N_HPP__ |

14 | |

15 | __#include <algorithm> // for std::copy_n, if available__ |

16 | |

17 | **namespace** boost { **namespace** algorithm { |

18 | |

19 | */// \fn copy_n ( InputIterator first, Size n, OutputIterator result )* |

20 | */// \brief Copies exactly n (n > 0) elements from the range starting at first to* |

21 | */// the range starting at result.* |

22 | */// \return The updated output iterator* |

23 | */// * |

24 | */// \param first The start of the input sequence* |

25 | */// \param n The number of elements to copy* |

26 | */// \param result An output iterator to write the results into* |

27 | */// \note This function is part of the C++2011 standard library.* |

28 | */// We will use the standard one if it is available, * |

29 | */// otherwise we have our own implementation.* |

30 | **template** <**typename** InputIterator, **typename** Size, **typename** OutputIterator> |

31 | OutputIterator copy_n ( InputIterator first, Size n, OutputIterator result ) |

32 | { |

33 | **for** ( ; n > `0`; --n, ++first, ++result ) |

34 | *result = *first; |

35 | **return** result; |

36 | } |

37 | }} *// namespace boost and algorithm* |

38 | |

39 | __#endif // BOOST_ALGORITHM_COPY_IF_HPP__ |

40 | |