/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/iterator/test/distance_test.cpp
84 строки
2 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// Copyright (C) 2017 Michel Morin. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include <vector> #include <list> #include <boost/container/slist.hpp> #include <boost/core/lightweight_test.hpp> #include <boost/iterator/distance.hpp> #include <boost/iterator/transform_iterator.hpp> int twice(int x) { return x + x; } template <typename Iterator> void test_distance(Iterator it_from, Iterator it_to, int n) { BOOST_TEST(boost::distance(it_from, it_to) == n); } int main() { int array[3] = {1, 2, 3}; int* ptr1 = array; int* ptr2 = array + 3; { test_distance(ptr1, ptr2, 3); test_distance(ptr2, ptr1, -3); test_distance( boost::make_transform_iterator(ptr1, twice) , boost::make_transform_iterator(ptr2, twice) , 3 ); test_distance( boost::make_transform_iterator(ptr2, twice) , boost::make_transform_iterator(ptr1, twice) , -3 ); } { std::vector<int> ints(ptr1, ptr2); test_distance(ints.begin(), ints.end(), 3); test_distance(ints.end(), ints.begin(), -3); test_distance( boost::make_transform_iterator(ints.begin(), twice) , boost::make_transform_iterator(ints.end(), twice) , 3 ); test_distance( boost::make_transform_iterator(ints.end(), twice) , boost::make_transform_iterator(ints.begin(), twice) , -3 ); } { std::list<int> ints(ptr1, ptr2); test_distance(ints.begin(), ints.end(), 3); test_distance( boost::make_transform_iterator(ints.begin(), twice) , boost::make_transform_iterator(ints.end(), twice) , 3 ); } { boost::container::slist<int> ints(ptr1, ptr2); test_distance(ints.begin(), ints.end(), 3); test_distance( boost::make_transform_iterator(ints.begin(), twice) , boost::make_transform_iterator(ints.end(), twice) , 3 ); } return boost::report_errors(); }