mirror of
https://github.com/boostorg/algorithm.git
synced 2025-06-26 20:41:42 +02:00
Compare commits
1 Commits
boost-1.46
...
boost-1.44
Author | SHA1 | Date | |
---|---|---|---|
f6c5cd6d2b |
@ -71,7 +71,7 @@ namespace boost {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename InputT, typename FindResultT>
|
template<typename InputT, typename FindResultT>
|
||||||
bool check_find_result(InputT&, FindResultT& FindResult)
|
bool check_find_result(InputT& Input, FindResultT& FindResult)
|
||||||
{
|
{
|
||||||
typedef BOOST_STRING_TYPENAME
|
typedef BOOST_STRING_TYPENAME
|
||||||
range_const_iterator<InputT>::type input_iterator_type;
|
range_const_iterator<InputT>::type input_iterator_type;
|
||||||
|
@ -258,13 +258,9 @@ namespace boost {
|
|||||||
m_Next(Begin),
|
m_Next(Begin),
|
||||||
m_End(End),
|
m_End(End),
|
||||||
m_bEof(false)
|
m_bEof(false)
|
||||||
{
|
|
||||||
// force the correct behavior for empty sequences and yield at least one token
|
|
||||||
if(Begin!=End)
|
|
||||||
{
|
{
|
||||||
increment();
|
increment();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
//! Constructor
|
//! Constructor
|
||||||
/*!
|
/*!
|
||||||
Construct new split_iterator for a given finder
|
Construct new split_iterator for a given finder
|
||||||
@ -282,12 +278,8 @@ namespace boost {
|
|||||||
m_Next=::boost::begin(lit_col);
|
m_Next=::boost::begin(lit_col);
|
||||||
m_End=::boost::end(lit_col);
|
m_End=::boost::end(lit_col);
|
||||||
|
|
||||||
// force the correct behavior for empty sequences and yield at least one token
|
|
||||||
if(m_Next!=m_End)
|
|
||||||
{
|
|
||||||
increment();
|
increment();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
The magic of <ulink url="../../libs/range/index.html">Boost.Range</ulink>
|
The magic of <ulink url="../../libs/range/index.html">Boost.Range</ulink>
|
||||||
provides a uniform way of handling different string types.
|
provides a uniform way of handling different string types.
|
||||||
If there is a need to pass a pair of iterators,
|
If there is a need to pass a pair of iterators,
|
||||||
<ulink url="../../libs/range/doc/html/range/reference/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
<ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
||||||
can be used to package iterators into a structure with a compatible interface.
|
can be used to package iterators into a structure with a compatible interface.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
@ -208,7 +208,7 @@
|
|||||||
</programlisting>
|
</programlisting>
|
||||||
<para>
|
<para>
|
||||||
We have used <functionname>find_last()</functionname> to search the <code>text</code> for "ll".
|
We have used <functionname>find_last()</functionname> to search the <code>text</code> for "ll".
|
||||||
The result is given in the <ulink url="../../libs/range/doc/html/range/reference/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>.
|
The result is given in the <ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>.
|
||||||
This range delimits the
|
This range delimits the
|
||||||
part of the input which satisfies the find criteria. In our example it is the last occurrence of "ll".
|
part of the input which satisfies the find criteria. In our example it is the last occurrence of "ll".
|
||||||
|
|
||||||
@ -217,7 +217,7 @@
|
|||||||
<ulink url="../../libs/range/index.html">Boost.Range</ulink>.
|
<ulink url="../../libs/range/index.html">Boost.Range</ulink>.
|
||||||
|
|
||||||
The following lines transform the result. Notice that
|
The following lines transform the result. Notice that
|
||||||
<ulink url="../../libs/range/doc/html/range/reference/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink> has familiar
|
<ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink> has familiar
|
||||||
<code>begin()</code> and <code>end()</code> methods, so it can be used like any other STL container.
|
<code>begin()</code> and <code>end()</code> methods, so it can be used like any other STL container.
|
||||||
Also it is convertible to bool therefore it is easy to use find algorithms for a simple containment checking.
|
Also it is convertible to bool therefore it is easy to use find algorithms for a simple containment checking.
|
||||||
</para>
|
</para>
|
||||||
@ -264,7 +264,7 @@
|
|||||||
the find iterator allows us to iterate over the substrings matching the specified criteria.
|
the find iterator allows us to iterate over the substrings matching the specified criteria.
|
||||||
This facility is using the <link linkend="string_algo.finder_concept">Finder</link> to incrementally
|
This facility is using the <link linkend="string_algo.finder_concept">Finder</link> to incrementally
|
||||||
search the string.
|
search the string.
|
||||||
Dereferencing a find iterator yields an <ulink url="../../libs/range/doc/html/range/reference/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
Dereferencing a find iterator yields an <ulink url="../../libs/range/doc/html/range/utilities/iterator_range.html"><code>boost::iterator_range</code></ulink>
|
||||||
object, that delimits the current match.
|
object, that delimits the current match.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
@ -40,7 +40,6 @@ void iterator_test()
|
|||||||
string str1("xx-abc--xx-abb");
|
string str1("xx-abc--xx-abb");
|
||||||
string str2("Xx-abc--xX-abb-xx");
|
string str2("Xx-abc--xX-abb-xx");
|
||||||
string str3("xx");
|
string str3("xx");
|
||||||
string strempty("");
|
|
||||||
const char* pch1="xx-abc--xx-abb";
|
const char* pch1="xx-abc--xx-abb";
|
||||||
vector<string> tokens;
|
vector<string> tokens;
|
||||||
vector< vector<int> > vtokens;
|
vector< vector<int> > vtokens;
|
||||||
@ -124,25 +123,6 @@ void iterator_test()
|
|||||||
BOOST_CHECK( tokens[3]==string("xx") );
|
BOOST_CHECK( tokens[3]==string("xx") );
|
||||||
BOOST_CHECK( tokens[4]==string("abb") );
|
BOOST_CHECK( tokens[4]==string("abb") );
|
||||||
|
|
||||||
split(
|
|
||||||
tokens,
|
|
||||||
str3,
|
|
||||||
is_any_of(","),
|
|
||||||
token_compress_off);
|
|
||||||
|
|
||||||
BOOST_REQUIRE( tokens.size()==1 );
|
|
||||||
BOOST_CHECK( tokens[0]==string("xx") );
|
|
||||||
|
|
||||||
split(
|
|
||||||
tokens,
|
|
||||||
strempty,
|
|
||||||
is_punct(),
|
|
||||||
token_compress_off);
|
|
||||||
|
|
||||||
BOOST_REQUIRE( tokens.size()==1 );
|
|
||||||
BOOST_CHECK( tokens[0]==string("") );
|
|
||||||
|
|
||||||
|
|
||||||
find_iterator<string::iterator> fiter=make_find_iterator(str1, first_finder("xx"));
|
find_iterator<string::iterator> fiter=make_find_iterator(str1, first_finder("xx"));
|
||||||
BOOST_CHECK(equals(*fiter, "xx"));
|
BOOST_CHECK(equals(*fiter, "xx"));
|
||||||
++fiter;
|
++fiter;
|
||||||
|
Reference in New Issue
Block a user