For the second version:
• There is enough space to hold all of the elements being copied. More formally, the requirement is that
Linear. Zero comparisons if either
inline bool lt_nocase(char c1, char c2) { return tolower(c1) < tolower(c2); }
int main() {
int A1[] = {1, 3, 5, 7, 9, 11};
int A2[] = {1, 1, 2, 3, 5, 8, 13};
char A3[] = {'a', 'b', 'b', 'B', 'B', 'f', 'g', 'h', 'H'};
char A4[] = {'A', 'B', 'B', 'C', 'D', 'F', 'F', 'H' };
const int N1 = sizeof(A1) / sizeof(int);
const int N2 = sizeof(A2) / sizeof(int);
const int N3 = sizeof(A3);
const int N4 = sizeof(A4);
cout << 'Symmetric difference of A1 and A2: ';
set_symmetric_difference(A1, A1 + N1, A2, A2 + N2, ostream_iterator<int>(cout, ' '));
cout << endl << 'Symmetric difference of A3 and A4: ';
set_symmetric_difference(A3, A3 + N3, A4, A4 + N4, ostream_iterator<char>(cout, ' '), lt_nocase);
cout << endl;
}
The output is
Symmetric difference of A1 and A2: 1 2 7 8 9 11 13
Symmetric difference of A3 and A4: B B C D F g H
[1] Even this is not a completely precise description, because the ordering by which the input ranges are sorted is permitted to be a strict weak ordering that is not a total ordering: there might be values
Heap operations
push_heap
Category: algorithms
Component type: function
template <class RandomAccessIterator>
void push_heap(RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class StrictWeakOrdering>
void push_heap(RandomAccessIterator first, RandomAccessIterator last, StrictWeakOrdering comp);
The two versions of