reverse(3C++)


reverse -- reverse the order of elements in an array

Synopsis

   template <class T>
   void reverse(T* b,T* e);
   template <class T>
   void reverse_c(T* b1,T* e1,T* b2);

Assumptions

(1) For the copy version, the output array does not overlap the input array.

(2) For the copy version, the output array has at least as many cells as the input array.

(3) T has operator=.

Description

These functions reverse the elements of an array. That is, for every integer i between 0 and e-b-1, location e-(i+1) will have the same value after reversal that b + i had before reversal.

   template <class T>
   void reverse(T* b,T* e);

Reverses the array in place.

   template <class T>
   void reverse_c(T* b1,T* e1,T* b2);

Like reverse except that the input array is preserved and the result written to a new array beginning at location b2.

Complexity

If N is the size of the array, then complexity is O(N) for both versions. More precisely,

plain version

Exactly 3floor(N/2) assignments are done.

copy version

Exactly N assignments are done.

Notes

Because a Block (see Block(3C++)) can always be used wherever an array is called for, Array Algorithms can also be used with Blocks. In fact, these two components were actually designed to be used together.

References

Array_alg(3C++), Block(3C++)
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004