A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.com/valarray::shift below:

public member function

<valarray>

std::valarray::shift
valarray shift (int n) const;

Shift elements

Returns a copy of the valarray object with its elements shifted left n spaces (or right if n is negative).

The valarray returned has the same length as *this, with the new elements value-initialized.

By shifting a valarray, the I-th element in the resulting valarray corresponds to the I+n-th element in the original valarray (whenever I+n is less than its size) or a default-constructed element (if I+n is greater than the size).

Unlike valarray::cshift (circular shift), the valarray returned by shift does not include the first n elements in *this (or the last -n elements if n is negative) in any position.



Parameters
n
Number of elements to shift. If positive, it is shifted left. If negative, it is shifted right.

Return value A new valarray object with the elements of *this shifted n spaces left.

Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// valarray::shift example
#include <iostream>     // std::cout
#include <cstddef>      // std::size_t
#include <valarray>     // std::valarray

int main ()
{
  int init[]={10,20,30,40,50};

  std::valarray<int> myvalarray (init,5);   // 10 20 30 40 50
  myvalarray = myvalarray.shift(2);         // 30 40 50  0  0
  myvalarray = myvalarray.shift(-1);        // 0  30 40 50  0

  std::cout << "myvalarray contains:";
  for (std::size_t n=0; n<myvalarray.size(); n++)
	  std::cout << ' ' << myvalarray[n];
  std::cout << '\n';

  return 0;
}

Output:
myvalarray contains: 0 30 40 50 0


Complexity Depends on library implementation (operations may be parallelized).

Iterator validity No changes: Valid iterators, references and sub-arrays of the source valarray keep their validity.

Data races Both the valarray and some of its elements are accessed.

Exception safety If the function implementation assigns to elements, and any such operation throws an exception, it causes undefined behavior.
If the function needs to allocate internal storage and fails, it may throw an exception (such as bad_alloc), although this is not mandated.

See also
valarray::cshift
Circularly shift elements (public member function)
valarray::resize
Resize valarray (public member function)
valarray operators
Valarray operators (function)

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4