Namespaces
Variants

std::valarray<T>::cshift

cppreference.net에서
 
 
 
 
valarray<T> cshift( int count ) const;

같은 크기의 새로운 valarray를 반환하며, 요소의 위치가 count 요소만큼 순환적으로 이동합니다.

count의 값이 음수가 아니면 요소를 왼쪽으로 count만큼 순환 이동하고, 음수이면 count의 값이 요소를 오른쪽으로 -count만큼 순환 이동합니다.

매개변수

count - 요소들을 이동시킬 위치 수

반환값

원형으로 이동된 요소들을 가진 결과 valarray.

비고

함수는 반환 유형이 std::valarray와 다른 것으로 구현될 수 있습니다. 이 경우 대체 유형은 다음과 같은 속성을 갖습니다:

  • 모든 const 의 멤버 함수 std::valarray 가 제공됩니다.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array 및 std::indirect_array 대체 유형으로부터 생성될 수 있습니다.
  • 를 취하는 모든 함수에 대해, const std::valarray<T>& 을 제외하고 begin() 및 end()(C++11부터), 대체 유형을 취하는 동일한 함수가 추가되어야 합니다;
  • 를 취하는 모든 함수에 대해, 두 개의 const std::valarray<T>& 인수, 동일한 함수가 모든 조합을 취하는 const std::valarray<T>& 및 대체 유형이 추가되어야 합니다.
  • 반환 유형은 가장 깊게 중첩된 인수 유형보다 두 수준 이상의 템플릿 중첩을 추가하지 않습니다.

예제

#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));
}

출력:

[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

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 618 C++98 이동된 요소들의 표현식이
size() 가 ​ 0 ​ 이면 0으로 나누기 포함
표현식 사용 없이 새로운 위치들을
설명함

참고 항목

valarray의 요소들을 제로-채움 이동
(public member function)