std::valarray::cshift(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::valarray::cshift(3) β€” C++ Standard Libary πŸ’…

🌸 NAME 🌸

  • std::valarray::cshift β€” std::valarray::cshift (yes bestie, that's literally the name line, and we're keeping it exactly like that) πŸ’–

✨ Synopsis ✨

Okay so the signature is literally this, no cap:

valarray<T> cshift( int count ) const;

Returns a new valarray of the same size with elements whose positions are shifted circularly by count elements.

A non-negative value of count shifts the elements circularly left count places, and a negative value of count shifts the elements circularly right -count places. Slay. πŸŒ€

πŸŽ€ Parameters πŸŽ€

  • count β€” number of positions to shift the elements by.

πŸ’– Return value πŸ’–

The resulting valarray with circularly shifted elements. Periodt. ✨

🧠 Notes 🧠

The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:

  • All const member functions of std::valarray are provided.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array and std::indirect_array can be constructed from the replacement type.
  • For every function taking a const std::valarray<T>& except begin() and end() (since C++11), identical functions taking the replacement types shall be added;
  • For every function taking two const std::valarray<T>& arguments, identical functions taking every combination of const std::valarray<T>& and replacement types shall be added.
  • The return type does not add more than two levels of template nesting over the most deeply-nested argument type.

🧚 Example 🧚

// Run this code

#include <iostream>
#include <valarray>

int main()
{
    std::valarray<int> v{1, 2, 3, 4, 5, 6, 7, 8};

    for (auto const& val : v)
        std::cout << val << ' ';
    std::cout << '\n';

    std::valarray<int> v2 = v.cshift(2);

    for (auto const& val : v2)
        std::cout << val << ' ';
    std::cout << '\n';
}

πŸ–₯️ Output πŸ–₯️

1 2 3 4 5 6 7 8
3 4 5 6 7 8 1 2

πŸ’€ Defect reports πŸ’€

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

  • DR: LWG 618; Applied to: C++98
    • Behavior as published: the expression of the shifted elements contains zero-division if size() is 0
    • Correct behavior: describes the new positions without using expressions

πŸ‘€ See also πŸ‘€

  • shift β€” zero-filling shift the elements of the valarray (public member function).

πŸ™ˆ Hidden category πŸ™ˆ

  • Pages with unreviewed LWG DR marker

🫢 Sign-off time, bestie: this page comes from http://cppreference.com, dated 2024.06.10, and the footer name is std::valarray::cshift(3). Bye! πŸ’–βœ¨

πŸ“¦ where this page comes from