⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 next_prior_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
// Boost test program for next() and prior() utilities.// Copyright 2003 Daniel Walker.  Use, modification, and distribution// are subject to the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or a copy at// http://www.boost.org/LICENSE_1_0.txt.)// See http://www.boost.org/libs/utility for documentation.// Revision History 13 Dec 2003 Initial Version (Daniel Walker)// next() and prior() are replacements for operator+ and operator- for// non-random-access iterators. The semantics of these operators are// such that after executing j = i + n, std::distance(i, j) equals// n. Tests are provided to ensure next() has the same// result. Parallel tests are provided for prior(). The tests call// next() and prior() several times. next() and prior() are very// simple functions, though, and it would be very strange if these// tests were to fail.#define BOOST_INCLUDE_MAIN#include <boost/test/test_tools.hpp>#include <list>#include <vector>#include <boost/next_prior.hpp>template<class RandomAccessIterator, class ForwardIterator>bool plus_one_test(RandomAccessIterator first, RandomAccessIterator last, ForwardIterator first2){    RandomAccessIterator i = first;    ForwardIterator j = first2;    while(i != last)        i = i + 1, j = boost::next(j);    return std::distance(first, i) == std::distance(first2, j);}template<class RandomAccessIterator, class ForwardIterator>bool plus_n_test(RandomAccessIterator first, RandomAccessIterator last, ForwardIterator first2){    RandomAccessIterator i = first;    ForwardIterator j = first2;    for(int n = 0; i != last; ++n)        i = first + n, j = boost::next(first2, n);    return std::distance(first, i) == std::distance(first2, j);}template<class RandomAccessIterator, class BidirectionalIterator>bool minus_one_test(RandomAccessIterator first, RandomAccessIterator last, BidirectionalIterator last2){    RandomAccessIterator i = last;    BidirectionalIterator j = last2;    while(i != first)        i = i - 1, j = boost::prior(j);    return std::distance(i, last) == std::distance(j, last2);}template<class RandomAccessIterator, class BidirectionalIterator>bool minus_n_test(RandomAccessIterator first, RandomAccessIterator last, BidirectionalIterator last2){    RandomAccessIterator i = last;    BidirectionalIterator j = last2;    for(int n = 0; i != first; ++n)        i = last - n, j = boost::prior(last2, n);    return std::distance(i, last) == std::distance(j, last2);}int test_main(int, char*[]){    std::vector<int> x(8);    std::list<int> y(x.begin(), x.end());    BOOST_REQUIRE(plus_one_test(x.begin(), x.end(), y.begin()));    BOOST_REQUIRE(plus_n_test(x.begin(), x.end(), y.begin()));    BOOST_REQUIRE(minus_one_test(x.begin(), x.end(), y.end()));    BOOST_REQUIRE(minus_n_test(x.begin(), x.end(), y.end()));    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -