forked from boostorg/iterator
Whitespace cleanup and formatting fixes in docs.
This commit is contained in:
1 parent
897ff65fdc
commit
3a8728a595
17 files changed
+219
-230
No files matched your search
@@ -1,12 +1,11 @@
|
||||
|
||||
[section:facade_tutorial Tutorial]
|
||||
|
||||
In this section we'll walk through the implementation of a few
|
||||
iterators using `iterator_facade`, based around the simple
|
||||
example of a linked list of polymorphic objects. This example was
|
||||
inspired by a
|
||||
inspired by a
|
||||
[@http://thread.gmane.org/gmane.comp.lib.boost.user/5100 `posting`]
|
||||
by Keith Macdonald on the
|
||||
by Keith Macdonald on the
|
||||
[@http://www.boost.org/more/mailing_lists.htm#users `Boost-Users`]
|
||||
mailing list.
|
||||
|
||||
@@ -30,16 +29,16 @@ Say we've written a polymorphic linked list node base class:
|
||||
|
||||
// print to the stream
|
||||
virtual void print(std::ostream& s) const = 0;
|
||||
|
||||
|
||||
// double the value
|
||||
virtual void double_me() = 0;
|
||||
|
||||
void append(node_base* p)
|
||||
{
|
||||
if (m_next)
|
||||
m_next->append(p);
|
||||
if (m_next)
|
||||
m_next->append(p);
|
||||
else
|
||||
m_next = p;
|
||||
m_next = p;
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -210,7 +209,7 @@ the concepts we want our iterator to model. Referring to the
|
||||
table__, we can see that the first three rows are applicable
|
||||
because `node_iterator` needs to satisfy the requirements for
|
||||
`readable iterator`_, `single pass iterator`_, and `incrementable
|
||||
iterator`_.
|
||||
iterator`_.
|
||||
|
||||
__ `core operations`_
|
||||
|
||||
@@ -254,7 +253,7 @@ make them private and grant friendship to
|
||||
};
|
||||
|
||||
Voila; a complete and conforming readable, forward-traversal
|
||||
iterator! For a working example of its use, see
|
||||
iterator! For a working example of its use, see
|
||||
[example_link node_iterator1.cpp..this program].
|
||||
|
||||
__ ../../example/node_iterator1.cpp
|
||||
@@ -265,7 +264,7 @@ __ ../../example/node_iterator1.cpp
|
||||
The term **mutable iterator** means an iterator through which
|
||||
the object it references (its "referent") can be modified. A
|
||||
**constant iterator** is one which doesn't allow modification of
|
||||
its referent.[br][br]
|
||||
its referent.[br][br]
|
||||
The words *constant* and *mutable* don't refer to the ability to
|
||||
modify the iterator itself. For example, an `int const*` is a
|
||||
non-\ `const` *constant iterator*, which can be incremented
|
||||
@@ -402,7 +401,7 @@ adding a templatized converting constructor [#broken]_ [#random]_:
|
||||
|
||||
template <class OtherValue>
|
||||
bool equal(node_iter<OtherValue> const& other) const
|
||||
{
|
||||
{
|
||||
return this->m_node == other.m_node;
|
||||
}
|
||||
|
||||
@@ -431,7 +430,7 @@ adding a templatized converting constructor [#broken]_ [#random]_:
|
||||
__ ../../example/node_iterator2.hpp
|
||||
|
||||
You can see an example program which exercises our interoperable
|
||||
iterators
|
||||
iterators
|
||||
[example_link node_iterator2.cpp..here].
|
||||
|
||||
|
||||
@@ -467,7 +466,7 @@ appropriate:
|
||||
|
||||
...
|
||||
|
||||
private:
|
||||
private:
|
||||
struct enabler {};
|
||||
|
||||
public:
|
||||
|
||||
Reference in new issue
Block a user