Namespaces
Variants

std::valarray<T>::cshift

De es.cppreference.net
 
 
 
 
valarray<T> cshift( int count ) const;

Devuelve un nuevo valarray del mismo tamaño con elementos cuyas posiciones se desplazan circularmente por count elementos.

Un valor no negativo de count desplaza los elementos circularmente a la izquierda count lugares y un valor negativo de count desplaza los elementos circularmente a la derecha -count lugares.

Parámetros

count - número de posiciones para desplazar los elementos

Valor de retorno

El valarray resultante con elementos desplazados circularmente.

Notas

La función puede implementarse con un tipo de retorno diferente de std::valarray. En este caso, el tipo de reemplazo tiene las siguientes propiedades:

  • Todas const las funciones miembro de std::valarray son proporcionadas.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array y std::indirect_array pueden construirse a partir del tipo de reemplazo.
  • Para cada función que tome un const std::valarray<T>& excepto begin() y end()(desde C++11), se añadirán funciones idénticas que tomen los tipos de reemplazo;
  • Para cada función que tome dos const std::valarray<T>& argumentos, se añadirán funciones idénticas que tomen cada combinación de const std::valarray<T>& y tipos de reemplazo.
  • El tipo de retorno no añade más de dos niveles de anidamiento de plantilla sobre el tipo de argumento más profundamente anidado.

Ejemplo

#include <print>
#include <valarray>

int main()
{
    const std::valarray<int> v{1, 2, 3, 4, 5, 6, 7, 8};
    std::println("{}", v);
    std::println("{} <- 3", v.cshift(3));
    std::println("{} <- 11", v.cshift(11));
    std::println("{} -> 2", v.cshift(-2));
    std::println("{} -> 10", v.cshift(-10));
}

Salida:

[1, 2, 3, 4, 5, 6, 7, 8]
[4, 5, 6, 7, 8, 1, 2, 3] <- 3
[4, 5, 6, 7, 8, 1, 2, 3] <- 11
[7, 8, 1, 2, 3, 4, 5, 6] -> 2
[7, 8, 1, 2, 3, 4, 5, 6] -> 10

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 618 C++98 la expresión de los elementos desplazados
contiene división por cero si size() es ​ 0 ​
describe las nuevas posiciones
sin usar expresiones

Véase también

desplazamiento con relleno de ceros de los elementos del valarray
(función miembro pública)