Index: lemon/christofides_tsp.h
===================================================================
--- lemon/christofides_tsp.h	(revision 1204)
+++ lemon/christofides_tsp.h	(revision 1205)
@@ -210,10 +210,21 @@
       ///
       /// This function copies the node sequence of the found tour into
-      /// the given standard container.
-      ///
-      /// \pre run() must be called before using this function.
-      template <typename Container>
-      void tourNodes(Container &container) const {
-        container.assign(_path.begin(), _path.end());
+      /// an STL container through the given output iterator. The
+      /// <tt>value_type</tt> of the container must be <tt>FullGraph::Node</tt>.
+      /// For example,
+      /// \code
+      /// std::vector<FullGraph::Node> nodes(countNodes(graph));
+      /// tsp.tourNodes(nodes.begin());
+      /// \endcode
+      /// or
+      /// \code
+      /// std::list<FullGraph::Node> nodes;
+      /// tsp.tourNodes(std::back_inserter(nodes));
+      /// \endcode
+      ///
+      /// \pre run() must be called before using this function.
+      template <typename Iterator>
+      void tourNodes(Iterator out) const {
+        std::copy(_path.begin(), _path.end(), out);
       }
       
Index: lemon/greedy_tsp.h
===================================================================
--- lemon/greedy_tsp.h	(revision 1204)
+++ lemon/greedy_tsp.h	(revision 1205)
@@ -207,10 +207,21 @@
       ///
       /// This function copies the node sequence of the found tour into
-      /// the given standard container.
-      ///
-      /// \pre run() must be called before using this function.
-      template <typename Container>
-      void tourNodes(Container &container) const {
-        container.assign(_path.begin(), _path.end());
+      /// an STL container through the given output iterator. The
+      /// <tt>value_type</tt> of the container must be <tt>FullGraph::Node</tt>.
+      /// For example,
+      /// \code
+      /// std::vector<FullGraph::Node> nodes(countNodes(graph));
+      /// tsp.tourNodes(nodes.begin());
+      /// \endcode
+      /// or
+      /// \code
+      /// std::list<FullGraph::Node> nodes;
+      /// tsp.tourNodes(std::back_inserter(nodes));
+      /// \endcode
+      ///
+      /// \pre run() must be called before using this function.
+      template <typename Iterator>
+      void tourNodes(Iterator out) const {
+        std::copy(_path.begin(), _path.end(), out);
       }
 
Index: lemon/insertion_tsp.h
===================================================================
--- lemon/insertion_tsp.h	(revision 1204)
+++ lemon/insertion_tsp.h	(revision 1205)
@@ -204,10 +204,21 @@
       ///
       /// This function copies the node sequence of the found tour into
-      /// the given standard container.
+      /// an STL container through the given output iterator. The
+      /// <tt>value_type</tt> of the container must be <tt>FullGraph::Node</tt>.
+      /// For example,
+      /// \code
+      /// std::vector<FullGraph::Node> nodes(countNodes(graph));
+      /// tsp.tourNodes(nodes.begin());
+      /// \endcode
+      /// or
+      /// \code
+      /// std::list<FullGraph::Node> nodes;
+      /// tsp.tourNodes(std::back_inserter(nodes));
+      /// \endcode
       ///
       /// \pre run() must be called before using this function.
-      template <typename Container>
-      void tourNodes(Container &container) const {
-        container.assign(_tour.begin(), _tour.end());
+      template <typename Iterator>
+      void tourNodes(Iterator out) const {
+        std::copy(_tour.begin(), _tour.end(), out);
       }
 
Index: lemon/nearest_neighbor_tsp.h
===================================================================
--- lemon/nearest_neighbor_tsp.h	(revision 1204)
+++ lemon/nearest_neighbor_tsp.h	(revision 1205)
@@ -194,10 +194,21 @@
       ///
       /// This function copies the node sequence of the found tour into
-      /// the given standard container.
-      ///
-      /// \pre run() must be called before using this function.
-      template <typename Container>
-      void tourNodes(Container &container) const {
-        container.assign(_path.begin(), _path.end());
+      /// an STL container through the given output iterator. The
+      /// <tt>value_type</tt> of the container must be <tt>FullGraph::Node</tt>.
+      /// For example,
+      /// \code
+      /// std::vector<FullGraph::Node> nodes(countNodes(graph));
+      /// tsp.tourNodes(nodes.begin());
+      /// \endcode
+      /// or
+      /// \code
+      /// std::list<FullGraph::Node> nodes;
+      /// tsp.tourNodes(std::back_inserter(nodes));
+      /// \endcode
+      ///
+      /// \pre run() must be called before using this function.
+      template <typename Iterator>
+      void tourNodes(Iterator out) const {
+        std::copy(_path.begin(), _path.end(), out);
       }
 
Index: lemon/opt2_tsp.h
===================================================================
--- lemon/opt2_tsp.h	(revision 1204)
+++ lemon/opt2_tsp.h	(revision 1205)
@@ -231,10 +231,21 @@
       ///
       /// This function copies the node sequence of the found tour into
-      /// the given standard container.
+      /// an STL container through the given output iterator. The
+      /// <tt>value_type</tt> of the container must be <tt>FullGraph::Node</tt>.
+      /// For example,
+      /// \code
+      /// std::vector<FullGraph::Node> nodes(countNodes(graph));
+      /// tsp.tourNodes(nodes.begin());
+      /// \endcode
+      /// or
+      /// \code
+      /// std::list<FullGraph::Node> nodes;
+      /// tsp.tourNodes(std::back_inserter(nodes));
+      /// \endcode
       ///
       /// \pre run() must be called before using this function.
-      template <typename Container>
-      void tourNodes(Container &container) const {
-        container.assign(_path.begin(), _path.end());
+      template <typename Iterator>
+      void tourNodes(Iterator out) const {
+        std::copy(_path.begin(), _path.end(), out);
       }
 
