mirror of
https://github.com/boostorg/container.git
synced 2025-08-01 05:24:31 +02:00
Improve test directly using transform_iterator and several containers
This commit is contained in:
@@ -1,12 +1,56 @@
|
|||||||
#include <boost/container/string.hpp>
|
#include <boost/iterator/transform_iterator.hpp>
|
||||||
#include <boost/archive/iterators/binary_from_base64.hpp>
|
#include <boost/container/vector.hpp>
|
||||||
|
#include <boost/container/list.hpp>
|
||||||
|
#include <boost/container/slist.hpp>
|
||||||
|
#include <boost/core/lightweight_test.hpp>
|
||||||
|
|
||||||
|
using namespace boost::container;
|
||||||
|
|
||||||
|
struct func
|
||||||
|
{
|
||||||
|
typedef int result_type;
|
||||||
|
int operator()(const int i) const
|
||||||
|
{ return i*2; }
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using String = boost::container::string;
|
const std::size_t N = 10u;
|
||||||
using Iterator = boost::archive::iterators::binary_from_base64<String::iterator>;
|
func f;
|
||||||
|
slist<int>s(N);
|
||||||
|
list<int>l(N);
|
||||||
|
vector<int>v(N);
|
||||||
|
|
||||||
|
vector<int>v2;
|
||||||
|
v2.insert(v2.end(), boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f));
|
||||||
|
v2.insert(v2.end(), boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f));
|
||||||
|
v2.insert(v2.end(), boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f));
|
||||||
|
|
||||||
|
v2.assign(boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f));
|
||||||
|
v2.assign(boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f));
|
||||||
|
v2.assign(boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f));
|
||||||
|
|
||||||
|
{
|
||||||
|
//slist
|
||||||
|
boost::transform_iterator<func, typename slist<int>::iterator>
|
||||||
|
ti(s.begin()), ti2(s.end()), ti3(ti);
|
||||||
|
boost::intrusive::iterator_uadvance(ti3, v.size());
|
||||||
|
BOOST_TEST(ti3 == ti2);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//list
|
||||||
|
boost::transform_iterator<func, typename list<int>::iterator>
|
||||||
|
ti(l.begin()), ti2(l.end()), ti3(ti);
|
||||||
|
boost::intrusive::iterator_uadvance(ti3, v.size());
|
||||||
|
BOOST_TEST(ti3 == ti2);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
//vector
|
||||||
|
boost::transform_iterator<func, typename vector<int>::iterator>
|
||||||
|
ti(v.begin()), ti2(v.end()), ti3(ti);
|
||||||
|
boost::intrusive::iterator_uadvance(ti3, v.size());
|
||||||
|
BOOST_TEST(ti3 == ti2);
|
||||||
|
}
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
||||||
|
|
||||||
String s;
|
|
||||||
s.assign(Iterator{s.begin()},Iterator{s.end()});
|
|
||||||
return 0;
|
|
||||||
}
|
|
Reference in New Issue
Block a user