input_iterator_tag) {
_Distance __k = 0;
- for (; __first != __last && __k < __n; ++__first, (void)++__k)
+ for (; __first != __last && __k < __n; ++__first, (void) ++__k)
__output_iter[__k] = *__first;
_Distance __sz = __k;
- for (; __first != __last; ++__first, (void)++__k) {
+ for (; __first != __last; ++__first, (void) ++__k) {
_Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, __k)(__g);
if (__r < __sz)
__output_iter[__r] = *__first;
if (__d > 1)
{
_Dp __uid;
- for (--__last, --__d; __first < __last; ++__first, --__d)
+ for (--__last, (void) --__d; __first < __last; ++__first, (void) --__d)
{
difference_type __i = __uid(__g, _Pp(0, __d));
if (__i != difference_type(0))
// All trues now at start of range, all falses in buffer
// Move falses back into range, but don't mess up __first which points to first false
__i = __first;
- for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i)
+ for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i)
*__i = _VSTD::move(*__t2);
// __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer
return __first;
__i = ++__first;
// All trues now at start of range, all falses in buffer
// Move falses back into range, but don't mess up __first which points to first false
- for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, ++__i)
+ for (value_type* __t2 = __p.first; __t2 < __t; ++__t2, (void) ++__i)
*__i = _VSTD::move(*__t2);
// __h destructs moved-from values out of the temp buffer, but doesn't deallocate buffer
return __first;
if (__len1 <= __len2)
{
value_type* __p = __buff;
- for (_BidirectionalIterator __i = __first; __i != __middle; __d.__incr((value_type*)0), (void) ++__i, ++__p)
+ for (_BidirectionalIterator __i = __first; __i != __middle; __d.__incr((value_type*)0), (void) ++__i, (void) ++__p)
::new(__p) value_type(_VSTD::move(*__i));
__half_inplace_merge(__buff, __p, __middle, __last, __first, __comp);
}
else
{
value_type* __p = __buff;
- for (_BidirectionalIterator __i = __middle; __i != __last; __d.__incr((value_type*)0), (void) ++__i, ++__p)
+ for (_BidirectionalIterator __i = __middle; __i != __last; __d.__incr((value_type*)0), (void) ++__i, (void) ++__p)
::new(__p) value_type(_VSTD::move(*__i));
typedef reverse_iterator<_BidirectionalIterator> _RBi;
typedef reverse_iterator<value_type*> _Rv;
{
if (__first1 == __last1)
{
- for (; __first2 != __last2; ++__first2, ++__result, __d.__incr((value_type*)0))
+ for (; __first2 != __last2; ++__first2, ++__result, (void) __d.__incr((value_type*)0))
::new (__result) value_type(_VSTD::move(*__first2));
__h.release();
return;
}
if (__first2 == __last2)
{
- for (; __first1 != __last1; ++__first1, ++__result, __d.__incr((value_type*)0))
+ for (; __first1 != __last1; ++__first1, ++__result, (void) __d.__incr((value_type*)0))
::new (__result) value_type(_VSTD::move(*__first1));
__h.release();
return;
{
if (__first2 == __last2)
{
- for (; __first1 != __last1; ++__first1, ++__result)
+ for (; __first1 != __last1; ++__first1, (void) ++__result)
*__result = _VSTD::move(*__first1);
return;
}
++__first1;
}
}
- for (; __first2 != __last2; ++__first2, ++__result)
+ for (; __first2 != __last2; ++__first2, (void) ++__result)
*__result = _VSTD::move(*__first2);
}
__sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
{
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
- for (difference_type __n = __last - __first; __n > 1; --__last, --__n)
+ for (difference_type __n = __last - __first; __n > 1; --__last, (void) --__n)
__pop_heap<_Compare>(__first, __last, __comp, __n);
}
_RandomAccessIterator __r = __result_first;
if (__r != __result_last)
{
- for (; __first != __last && __r != __result_last; (void) ++__first, ++__r)
+ for (; __first != __last && __r != __result_last; ++__first, (void) ++__r)
*__r = *__first;
__make_heap<_Compare>(__result_first, __r, __comp);
typename iterator_traits<_RandomAccessIterator>::difference_type __len = __r - __result_first;
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
#if TEST_STD_VER > 17
TEST_CONSTEXPR bool test_constexpr() {
void test()
{
+ typedef random_access_iterator<int *> RI;
int i1[] = {0, 0};
assert(std::is_heap(i1, i1));
assert(std::is_heap(i1, i1+1) == (std::is_heap_until(i1, i1+1) == i1+1));
+ assert(std::is_heap(RI(i1), RI(i1)));
+ assert(std::is_heap(RI(i1), RI(i1+1)) == (std::is_heap_until(RI(i1), RI(i1+1)) == RI(i1+1)));
+
int i2[] = {0, 1};
int i3[] = {1, 0};
assert(std::is_heap(i1, i1+2) == (std::is_heap_until(i1, i1+2) == i1+2));
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
#if TEST_STD_VER > 17
TEST_CONSTEXPR bool test_constexpr() {
void test()
{
+ typedef random_access_iterator<int *> RI;
int i1[] = {0, 0};
assert(std::is_heap(i1, i1, std::greater<int>()));
assert(std::is_heap(i1, i1+1, std::greater<int>()) == (std::is_heap_until(i1, i1+1, std::greater<int>()) == i1+1));
+ assert(std::is_heap(RI(i1), RI(i1), std::greater<int>()));
+ assert(std::is_heap(RI(i1), RI(i1+1), std::greater<int>()) == (std::is_heap_until(RI(i1), RI(i1+1), std::greater<int>()) == RI(i1+1)));
+
int i2[] = {0, 1};
int i3[] = {1, 0};
assert(std::is_heap(i1, i1+2, std::greater<int>()) == (std::is_heap_until(i1, i1+2, std::greater<int>()) == i1+2));
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
#if TEST_STD_VER > 17
TEST_CONSTEXPR bool test_constexpr() {
void test()
{
+ typedef random_access_iterator<int *> RI;
int i1[] = {0, 0};
assert(std::is_heap_until(i1, i1) == i1);
assert(std::is_heap_until(i1, i1+1) == i1+1);
+ assert(std::is_heap_until(RI(i1), RI(i1)) == RI(i1));
+ assert(std::is_heap_until(RI(i1), RI(i1+1)) == RI(i1+1));
+
int i2[] = {0, 1};
int i3[] = {1, 0};
assert(std::is_heap_until(i1, i1+2) == i1+2);
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
#if TEST_STD_VER > 17
TEST_CONSTEXPR bool test_constexpr() {
void test()
{
+ typedef random_access_iterator<int *> RI;
int i1[] = {0, 0};
assert(std::is_heap_until(i1, i1, std::greater<int>()) == i1);
assert(std::is_heap_until(i1, i1+1, std::greater<int>()) == i1+1);
+ assert(std::is_heap_until(RI(i1), RI(i1), std::greater<int>()) == RI(i1));
+ assert(std::is_heap_until(RI(i1), RI(i1+1), std::greater<int>()) == RI(i1+1));
+
int i2[] = {0, 1};
int i3[] = {1, 0};
assert(std::is_heap_until(i1, i1+2, std::greater<int>()) == i1+2);
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
std::mt19937 randomness;
std::shuffle(ia, ia+N, randomness);
std::make_heap(ia, ia+N);
assert(std::is_heap(ia, ia+N));
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ std::make_heap(RI(ia), RI(ia+N));
+ assert(std::is_heap(RI(ia), RI(ia+N)));
+
delete [] ia;
}
#include "test_macros.h"
#include "counting_predicates.hpp"
+#include "test_iterators.h"
struct indirect_less
{
std::shuffle(ia, ia+N, randomness);
std::make_heap(ia, ia+N, std::greater<int>());
assert(std::is_heap(ia, ia+N, std::greater<int>()));
+
+ std::shuffle(ia, ia+N, randomness);
+ std::make_heap(random_access_iterator<int *>(ia),
+ random_access_iterator<int *>(ia+N), std::greater<int>());
+ assert(std::is_heap(ia, ia+N, std::greater<int>()));
}
// Ascending
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
std::mt19937 randomness;
assert(std::is_heap(ia, ia+i-1));
}
std::pop_heap(ia, ia);
+
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ std::make_heap(RI(ia), RI(ia+N));
+ for (int i = N; i > 0; --i)
+ {
+ std::pop_heap(RI(ia), RI(ia+i));
+ assert(std::is_heap(RI(ia), RI(ia+i-1)));
+ }
+ std::pop_heap(RI(ia), RI(ia));
+
delete [] ia;
}
#include <memory>
#include "test_macros.h"
+#include "test_iterators.h"
struct indirect_less
{
assert(std::is_heap(ia, ia+i-1, std::greater<int>()));
}
std::pop_heap(ia, ia, std::greater<int>());
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ std::make_heap(RI(ia), RI(ia+N), std::greater<int>());
+ for (int i = N; i > 0; --i)
+ {
+ std::pop_heap(RI(ia), RI(ia+i), std::greater<int>());
+ assert(std::is_heap(RI(ia), RI(ia+i-1), std::greater<int>()));
+ }
+ std::pop_heap(RI(ia), RI(ia), std::greater<int>());
+
delete [] ia;
}
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
std::mt19937 randomness;
std::push_heap(ia, ia+i);
assert(std::is_heap(ia, ia+i));
}
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ for (int i = 0; i <= N; ++i)
+ {
+ std::push_heap(RI(ia), RI(ia+i));
+ assert(std::is_heap(RI(ia), RI(ia+i)));
+ }
+
delete [] ia;
}
#include <memory>
#include "test_macros.h"
+#include "test_iterators.h"
struct indirect_less
{
std::push_heap(ia, ia+i, std::greater<int>());
assert(std::is_heap(ia, ia+i, std::greater<int>()));
}
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ for (int i = 0; i <= N; ++i)
+ {
+ std::push_heap(RI(ia), RI(ia+i), std::greater<int>());
+ assert(std::is_heap(RI(ia), RI(ia+i), std::greater<int>()));
+ }
+
delete [] ia;
}
#include <cassert>
#include "test_macros.h"
+#include "test_iterators.h"
std::mt19937 randomness;
std::make_heap(ia, ia+N);
std::sort_heap(ia, ia+N);
assert(std::is_sorted(ia, ia+N));
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ std::make_heap(RI(ia), RI(ia+N));
+ std::sort_heap(RI(ia), RI(ia+N));
+ assert(std::is_sorted(RI(ia), RI(ia+N)));
+
delete [] ia;
}
#include <memory>
#include "test_macros.h"
+#include "test_iterators.h"
struct indirect_less
{
std::make_heap(ia, ia+N, std::greater<int>());
std::sort_heap(ia, ia+N, std::greater<int>());
assert(std::is_sorted(ia, ia+N, std::greater<int>()));
+
+ typedef random_access_iterator<int *> RI;
+ std::shuffle(RI(ia), RI(ia+N), randomness);
+ std::make_heap(RI(ia), RI(ia+N), std::greater<int>());
+ std::sort_heap(RI(ia), RI(ia+N), std::greater<int>());
+ assert(std::is_sorted(RI(ia), RI(ia+N), std::greater<int>()));
delete [] ia;
}