31#ifndef _GLIBCXX_VALARRAY
32#define _GLIBCXX_VALARRAY 1
35#pragma GCC system_header
44#if __cplusplus >= 201103L
49#define __glibcxx_want_valarray
52namespace std _GLIBCXX_VISIBILITY(default)
54_GLIBCXX_BEGIN_NAMESPACE_VERSION
56 template<
class _Clos,
typename _Tp>
59 template<
typename _Tp1,
typename _Tp2>
64 template<
class _Oper,
template<
class,
class>
class _Meta,
class _Dom>
68 template<
class,
class>
class _Meta1,
69 template<
class,
class>
class _Meta2,
70 class _Dom1,
class _Dom2>
73 template<
template<
class,
class>
class _Meta,
class _Dom>
76 template<
template<
class,
class>
class _Meta,
class _Dom>
79 template<
template<
class,
class>
class _Meta,
class _Dom>
82 template<
template<
class,
class>
class _Meta,
class _Dom>
85 template<
template<
class,
class>
class _Meta,
class _Dom>
89 using __detail::_UnClos;
90 using __detail::_BinClos;
91 using __detail::_SClos;
92 using __detail::_GClos;
93 using __detail::_IClos;
94 using __detail::_ValFunClos;
95 using __detail::_RefFunClos;
105_GLIBCXX_END_NAMESPACE_VERSION
111namespace std _GLIBCXX_VISIBILITY(default)
113_GLIBCXX_BEGIN_NAMESPACE_VERSION
140 typedef typename __fun<_Op, _Tp>::result_type __rt;
141 typedef _Expr<_UnClos<_Op, _ValArray, _Tp>, __rt> _Rt;
144 typedef _Tp value_type;
145#if __glibcxx_valarray >= 202511L
146 typedef _Tp* iterator;
147 typedef const _Tp* const_iterator;
166#if __cplusplus >= 201103L
183#if __cplusplus >= 201103L
189 valarray(
const _Expr<_Dom, _Tp>& __e);
201 valarray<_Tp>& operator=(const valarray<_Tp>& __v);
203#if __cplusplus >= 201103L
211 valarray<_Tp>&
operator=(valarray<_Tp>&& __v)
noexcept;
221 valarray<_Tp>&
operator=(
const _Tp& __t);
263#if __cplusplus >= 201103L
275 template<
class _Dom> valarray<_Tp>&
289 const _Tp&
operator[](
size_t)
const _GLIBCXX_NOTHROW;
351 valarray<_Tp>
operator[](
const valarray<bool>& __m)
const;
378 _Expr<_IClos<_ValArray, _Tp>, _Tp>
379 operator[](
const valarray<size_t>& __i)
const;
403 typename _UnaryOp<__bitwise_not>::_Rt
operator~()
const;
406 typename _UnaryOp<__logical_not>::_Rt
operator!()
const;
491#if __cplusplus >= 201103L
493 void swap(valarray<_Tp>& __v)
noexcept;
528 valarray<_Tp>
shift (
int __n)
const;
557 _Expr<_ValFunClos<_ValArray, _Tp>, _Tp>
apply(_Tp __func(_Tp))
const;
569 _Expr<_RefFunClos<_ValArray, _Tp>, _Tp>
apply(_Tp __func(
const _Tp&))
const;
580 void resize(
size_t __size, _Tp __c = _Tp());
582#if __glibcxx_valarray >= 202511L
594 begin() const noexcept
604 {
return _M_data + _M_size; }
609 {
return _M_data + _M_size; }
614 _Tp* __restrict__ _M_data;
616 friend struct _Array<_Tp>;
619#if __cpp_deduction_guides >= 201606
620 template<
typename _Tp,
size_t _Nm>
624 template<
typename _Tp>
628 __glibcxx_requires_subscript(__i);
632 template<
typename _Tp>
636 __glibcxx_requires_subscript(__i);
642_GLIBCXX_END_NAMESPACE_VERSION
652namespace std _GLIBCXX_VISIBILITY(default)
654_GLIBCXX_BEGIN_NAMESPACE_VERSION
661 template<
typename _Tp>
665 template<
typename _Tp>
668 : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
669 { std::__valarray_default_construct(_M_data, _M_data + __n); }
671 template<
typename _Tp>
674 : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
675 { std::__valarray_fill_construct(_M_data, _M_data + __n, __t); }
677 template<
typename _Tp>
680 : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
682 __glibcxx_assert(__p != 0 || __n == 0);
683 std::__valarray_copy_construct(__p, __p + __n, _M_data);
686 template<
typename _Tp>
689 : _M_size(__v._M_size), _M_data(__valarray_get_storage<_Tp>(__v._M_size))
690 { std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size,
693#if __cplusplus >= 201103L
694 template<
typename _Tp>
697 : _M_size(__v._M_size), _M_data(__v._M_data)
704 template<
typename _Tp>
707 : _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
709 std::__valarray_copy_construct
710 (__sa._M_array, __sa._M_sz, __sa._M_stride, _Array<_Tp>(_M_data));
713 template<
typename _Tp>
716 : _M_size(__ga._M_index.
size()),
717 _M_data(__valarray_get_storage<_Tp>(_M_size))
719 std::__valarray_copy_construct
720 (__ga._M_array, _Array<size_t>(__ga._M_index),
721 _Array<_Tp>(_M_data), _M_size);
724 template<
typename _Tp>
727 : _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
729 std::__valarray_copy_construct
730 (__ma._M_array, __ma._M_mask, _Array<_Tp>(_M_data), _M_size);
733 template<
typename _Tp>
736 : _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
738 std::__valarray_copy_construct
739 (__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
742#if __cplusplus >= 201103L
743 template<
typename _Tp>
746 : _M_size(__l.
size()), _M_data(__valarray_get_storage<_Tp>(__l.
size()))
747 { std::__valarray_copy_construct(__l.begin(), __l.end(), _M_data); }
750 template<
typename _Tp>
template<
class _Dom>
753 : _M_size(__e.
size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
754 { std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data)); }
756 template<
typename _Tp>
758 valarray<_Tp>::~valarray() _GLIBCXX_NOEXCEPT
760 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
761 std::__valarray_release_memory(_M_data, _M_size);
764 template<
typename _Tp>
770 if (_M_size == __v._M_size)
771 std::__valarray_copy(__v._M_data, _M_size, _M_data);
776 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
777 std::__valarray_release_memory(_M_data, _M_size);
779 _M_size = __v._M_size;
780 _M_data = __valarray_get_storage<_Tp>(_M_size);
781 std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size,
787#if __cplusplus >= 201103L
788 template<
typename _Tp>
794 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
795 std::__valarray_release_memory(_M_data, _M_size);
797 _M_size = __v._M_size;
798 _M_data = __v._M_data;
804 template<
typename _Tp>
810 if (_M_size == __l.size())
811 std::__valarray_copy(__l.begin(), __l.size(), _M_data);
816 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
817 std::__valarray_release_memory(_M_data, _M_size);
819 _M_size = __l.size();
820 _M_data = __valarray_get_storage<_Tp>(_M_size);
821 std::__valarray_copy_construct(__l.begin(), __l.begin() + _M_size,
828 template<
typename _Tp>
832 std::__valarray_fill(_M_data, _M_size, __t);
836 template<
typename _Tp>
840 __glibcxx_assert(_M_size == __sa._M_sz);
841 std::__valarray_copy(__sa._M_array, __sa._M_sz,
842 __sa._M_stride, _Array<_Tp>(_M_data));
846 template<
typename _Tp>
850 __glibcxx_assert(_M_size == __ga._M_index.
size());
851 std::__valarray_copy(__ga._M_array, _Array<size_t>(__ga._M_index),
852 _Array<_Tp>(_M_data), _M_size);
856 template<
typename _Tp>
860 __glibcxx_assert(_M_size == __ma._M_sz);
861 std::__valarray_copy(__ma._M_array, __ma._M_mask,
862 _Array<_Tp>(_M_data), _M_size);
866 template<
typename _Tp>
870 __glibcxx_assert(_M_size == __ia._M_sz);
871 std::__valarray_copy(__ia._M_array, __ia._M_index,
872 _Array<_Tp>(_M_data), _M_size);
876 template<
typename _Tp>
template<
class _Dom>
882 if (_M_size == __e.size())
887 for (
size_t __i = 0; __i < _M_size; ++__i)
888 _M_data[__i] = __e[__i];
894 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
895 std::__valarray_release_memory(_M_data, _M_size);
897 _M_size = __e.size();
898 _M_data = __valarray_get_storage<_Tp>(_M_size);
899 std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data));
904 template<
typename _Tp>
905 inline _Expr<_SClos<_ValArray,_Tp>, _Tp>
908 typedef _SClos<_ValArray,_Tp> _Closure;
909 return _Expr<_Closure, _Tp>(_Closure (_Array<_Tp>(_M_data), __s));
912 template<
typename _Tp>
917 template<
typename _Tp>
918 inline _Expr<_GClos<_ValArray,_Tp>, _Tp>
921 typedef _GClos<_ValArray,_Tp> _Closure;
922 return _Expr<_Closure, _Tp>
923 (_Closure(_Array<_Tp>(_M_data), __gs._M_index->_M_index));
926 template<
typename _Tp>
931 (_Array<_Tp>(_M_data), __gs._M_index->_M_index);
934 template<
typename _Tp>
939 size_t __e = __m.
size();
940 for (
size_t __i=0; __i<__e; ++__i)
942 __glibcxx_assert(__s <= _M_size);
944 _Array<bool> (__m)));
947 template<
typename _Tp>
952 size_t __e = __m.
size();
953 for (
size_t __i=0; __i<__e; ++__i)
955 __glibcxx_assert(__s <= _M_size);
959 template<
typename _Tp>
960 inline _Expr<_IClos<_ValArray,_Tp>, _Tp>
963 typedef _IClos<_ValArray,_Tp> _Closure;
964 return _Expr<_Closure, _Tp>(_Closure(*
this, __i));
967 template<
typename _Tp>
972 _Array<size_t>(__i));
975#if __cplusplus >= 201103L
980 std::swap(_M_size, __v._M_size);
981 std::swap(_M_data, __v._M_data);
994 __glibcxx_assert(_M_size > 0);
995 return std::__valarray_sum(_M_data, _M_data + _M_size);
1007 _Tp* __restrict__ __tmp_M_data =
1008 std::__valarray_get_storage<_Tp>(_M_size);
1011 std::__valarray_copy_construct(_M_data,
1012 _M_data + _M_size, __tmp_M_data);
1015 if (
size_t(__n) > _M_size)
1018 std::__valarray_copy_construct(_M_data + __n,
1019 _M_data + _M_size, __tmp_M_data);
1020 std::__valarray_default_construct(__tmp_M_data + _M_size - __n,
1021 __tmp_M_data + _M_size);
1025 if (-
size_t(__n) > _M_size)
1026 __n = -int(_M_size);
1028 std::__valarray_copy_construct(_M_data, _M_data + _M_size + __n,
1029 __tmp_M_data - __n);
1030 std::__valarray_default_construct(__tmp_M_data,
1031 __tmp_M_data - __n);
1034 __ret._M_size = _M_size;
1035 __ret._M_data = __tmp_M_data;
1048 _Tp* __restrict__ __tmp_M_data =
1049 std::__valarray_get_storage<_Tp>(_M_size);
1052 std::__valarray_copy_construct(_M_data,
1053 _M_data + _M_size, __tmp_M_data);
1056 if (
size_t(__n) > _M_size)
1057 __n = int(__n % _M_size);
1059 std::__valarray_copy_construct(_M_data, _M_data + __n,
1060 __tmp_M_data + _M_size - __n);
1061 std::__valarray_copy_construct(_M_data + __n, _M_data + _M_size,
1066 if (-
size_t(__n) > _M_size)
1067 __n = -int(-
size_t(__n) % _M_size);
1069 std::__valarray_copy_construct(_M_data + _M_size + __n,
1070 _M_data + _M_size, __tmp_M_data);
1071 std::__valarray_copy_construct(_M_data, _M_data + _M_size + __n,
1072 __tmp_M_data - __n);
1075 __ret._M_size = _M_size;
1076 __ret._M_data = __tmp_M_data;
1087 std::__valarray_destroy_elements(_M_data, _M_data + _M_size);
1090 std::__valarray_release_memory(_M_data, _M_size);
1092 _M_data = __valarray_get_storage<_Tp>(__n);
1094 std::__valarray_fill_construct(_M_data, _M_data + __n, __c);
1097 template<
typename _Tp>
1101 __glibcxx_assert(_M_size > 0);
1102 return *std::min_element(_M_data, _M_data + _M_size);
1105 template<
typename _Tp>
1109 __glibcxx_assert(_M_size > 0);
1110 return *std::max_element(_M_data, _M_data + _M_size);
1114 inline _Expr<_ValFunClos<_ValArray, _Tp>, _Tp>
1117 typedef _ValFunClos<_ValArray, _Tp> _Closure;
1118 return _Expr<_Closure, _Tp>(_Closure(*
this, __func));
1122 inline _Expr<_RefFunClos<_ValArray, _Tp>, _Tp>
1125 typedef _RefFunClos<_ValArray, _Tp> _Closure;
1126 return _Expr<_Closure, _Tp>(_Closure(*
this, __func));
1130#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
1131 template<typename _Tp> \
1132 inline typename valarray<_Tp>::template _UnaryOp<_Name>::_Rt \
1133 valarray<_Tp>::operator _Op() const \
1135 typedef _UnClos<_Name, _ValArray, _Tp> _Closure; \
1136 typedef typename __fun<_Name, _Tp>::result_type _Rt; \
1137 return _Expr<_Closure, _Rt>(_Closure(*this)); \
1140 _DEFINE_VALARRAY_UNARY_OPERATOR(+, __unary_plus)
1141 _DEFINE_VALARRAY_UNARY_OPERATOR(-, __negate)
1142 _DEFINE_VALARRAY_UNARY_OPERATOR(~, __bitwise_not)
1143 _DEFINE_VALARRAY_UNARY_OPERATOR (!, __logical_not)
1145#undef _DEFINE_VALARRAY_UNARY_OPERATOR
1147#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \
1148 template<class _Tp> \
1149 inline valarray<_Tp>& \
1150 valarray<_Tp>::operator _Op##=(const _Tp &__t) \
1152 _Array_augmented_##_Name(_Array<_Tp>(_M_data), _M_size, __t); \
1156 template<class _Tp> \
1157 inline valarray<_Tp>& \
1158 valarray<_Tp>::operator _Op##=(const valarray<_Tp> &__v) \
1160 __glibcxx_assert(_M_size == __v._M_size); \
1161 _Array_augmented_##_Name(_Array<_Tp>(_M_data), _M_size, \
1162 _Array<_Tp>(__v._M_data)); \
1166_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(+, __plus)
1167_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(-, __minus)
1168_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(*, __multiplies)
1169_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(/, __divides)
1170_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(%, __modulus)
1171_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(^, __bitwise_xor)
1172_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(&, __bitwise_and)
1173_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(|, __bitwise_or)
1174_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(<<, __shift_left)
1175_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(>>, __shift_right)
1177#undef _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT
1179#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
1180 template<class _Tp> template<class _Dom> \
1181 inline valarray<_Tp>& \
1182 valarray<_Tp>::operator _Op##=(const _Expr<_Dom, _Tp>& __e) \
1184 _Array_augmented_##_Name(_Array<_Tp>(_M_data), __e, _M_size); \
1188_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(+, __plus)
1189_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(-, __minus)
1190_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(*, __multiplies)
1191_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(/, __divides)
1192_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(%, __modulus)
1193_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(^, __bitwise_xor)
1194_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(&, __bitwise_and)
1195_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(|, __bitwise_or)
1196_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(<<, __shift_left)
1197_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, __shift_right)
1199#undef _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT
1202#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
1203 template<typename _Tp> \
1204 inline _Expr<_BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp>, \
1205 typename __fun<_Name, _Tp>::result_type> \
1206 operator _Op(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
1208 __glibcxx_assert(__v.size() == __w.size()); \
1209 typedef _BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp> _Closure; \
1210 typedef typename __fun<_Name, _Tp>::result_type _Rt; \
1211 return _Expr<_Closure, _Rt>(_Closure(__v, __w)); \
1214 template<typename _Tp> \
1215 inline _Expr<_BinClos<_Name, _ValArray,_Constant, _Tp, _Tp>, \
1216 typename __fun<_Name, _Tp>::result_type> \
1217 operator _Op(const valarray<_Tp>& __v, \
1218 const typename valarray<_Tp>::value_type& __t) \
1220 typedef _BinClos<_Name, _ValArray, _Constant, _Tp, _Tp> _Closure; \
1221 typedef typename __fun<_Name, _Tp>::result_type _Rt; \
1222 return _Expr<_Closure, _Rt>(_Closure(__v, __t)); \
1225 template<typename _Tp> \
1226 inline _Expr<_BinClos<_Name, _Constant, _ValArray, _Tp, _Tp>, \
1227 typename __fun<_Name, _Tp>::result_type> \
1228 operator _Op(const typename valarray<_Tp>::value_type& __t, \
1229 const valarray<_Tp>& __v) \
1231 typedef _BinClos<_Name, _Constant, _ValArray, _Tp, _Tp> _Closure; \
1232 typedef typename __fun<_Name, _Tp>::result_type _Rt; \
1233 return _Expr<_Closure, _Rt>(_Closure(__t, __v)); \
1236_DEFINE_BINARY_OPERATOR(+, __plus)
1237_DEFINE_BINARY_OPERATOR(-, __minus)
1238_DEFINE_BINARY_OPERATOR(*, __multiplies)
1239_DEFINE_BINARY_OPERATOR(/, __divides)
1240_DEFINE_BINARY_OPERATOR(%, __modulus)
1241_DEFINE_BINARY_OPERATOR(^, __bitwise_xor)
1242_DEFINE_BINARY_OPERATOR(&, __bitwise_and)
1243_DEFINE_BINARY_OPERATOR(|, __bitwise_or)
1244_DEFINE_BINARY_OPERATOR(<<, __shift_left)
1245_DEFINE_BINARY_OPERATOR(>>, __shift_right)
1246_DEFINE_BINARY_OPERATOR(&&, __logical_and)
1247_DEFINE_BINARY_OPERATOR(||, __logical_or)
1248_DEFINE_BINARY_OPERATOR(==, __equal_to)
1249_DEFINE_BINARY_OPERATOR(!=, __not_equal_to)
1250_DEFINE_BINARY_OPERATOR(<, __less)
1251_DEFINE_BINARY_OPERATOR(>, __greater)
1252_DEFINE_BINARY_OPERATOR(<=, __less_equal)
1253_DEFINE_BINARY_OPERATOR(>=, __greater_equal)
1255#undef _DEFINE_BINARY_OPERATOR
1258#if (__cplusplus >= 201103L) && (__glibcxx_valarray < 202511L)
1278 begin(
const valarray<_Tp>& __va)
noexcept
1291 if (
auto __n = __va.size())
1307 if (
auto __n = __va.size())
1316_GLIBCXX_END_NAMESPACE_VERSION
constexpr _Tp * __addressof(_Tp &__r) noexcept
Same as C++11 std::addressof.
size_t size() const
Return the number of elements in array.
_Tp min() const
Return the minimum element using operator<().
_Tp max() const
Return the maximum element using operator<().
valarray< _Tp > cshift(int __n) const
Return a rotated array.
void swap(valarray< _Tp > &__v) noexcept
Swap.
_Tp & operator[](size_t __i) noexcept
void resize(size_t __size, _Tp __c=_Tp())
Resize array.
_Tp sum() const
Return the sum of all elements in the array.
valarray() noexcept
Construct an empty array.
valarray< _Tp > shift(int __n) const
Return a shifted array.
_Expr< _ValFunClos< _ValArray, _Tp >, _Tp > apply(_Tp __func(_Tp)) const
Apply a function to the array.
valarray< _Tp > & operator=(const valarray< _Tp > &__v)
Assign elements to an array.
ISO C++ entities toplevel namespace is std.
constexpr auto end(_Container &__cont) noexcept(noexcept(__cont.end())) -> decltype(__cont.end())
Return an iterator pointing to one past the last element of the container.
constexpr auto size(const _Container &__cont) noexcept(noexcept(__cont.size())) -> decltype(__cont.size())
Return the size of a container.
constexpr auto begin(_Container &__cont) noexcept(noexcept(__cont.begin())) -> decltype(__cont.begin())
Return an iterator pointing to the first element of the container.
Implementation details not part of the namespace std interface.
Smart array designed to support numeric processing.
valarray< _Tp > & operator^=(const _Tp &)
Set each element e of array to e ^ t.
valarray< _Tp > & operator/=(const _Tp &)
Divide each element of array by t.
valarray(const _Tp *__restrict__, size_t)
Construct an array initialized to the first n elements of t.
valarray< _Tp > & operator|=(const valarray< _Tp > &)
Logical or corresponding elements of v with elements of array.
_UnaryOp< __unary_plus >::_Rt operator+() const
Return a new valarray by applying unary + to each element.
valarray< _Tp > & operator*=(const _Tp &)
Multiply each element of array by t.
_UnaryOp< __logical_not >::_Rt operator!() const
Return a new valarray by applying unary ! to each element.
iterator begin() noexcept
Return an iterator pointing to the first element of the valarray.
iterator end() noexcept
Return an iterator pointing to one past the last element of the valarray.
valarray< _Tp > & operator<<=(const _Tp &)
Left shift each element e of array by t bits.
valarray< _Tp > & operator/=(const valarray< _Tp > &)
Divide elements of array by corresponding elements of v.
valarray< _Tp > & operator-=(const _Tp &)
Subtract t to each element of array.
_UnaryOp< __bitwise_not >::_Rt operator~() const
Return a new valarray by applying unary ~ to each element.
valarray< _Tp > & operator>>=(const _Tp &)
Right shift each element e of array by t bits.
valarray< _Tp > & operator-=(const valarray< _Tp > &)
Subtract corresponding elements of v from elements of array.
valarray< _Tp > & operator%=(const _Tp &)
Set each element e of array to e % t.
valarray< _Tp > & operator+=(const _Tp &)
Add t to each element of array.
valarray< _Tp > & operator>>=(const valarray< _Tp > &)
Right shift elements of array by corresponding elements of v.
valarray< _Tp > & operator+=(const valarray< _Tp > &)
Add corresponding elements of v to elements of array.
valarray< _Tp > & operator^=(const valarray< _Tp > &)
Logical xor corresponding elements of v with elements of array.
valarray< _Tp > & operator&=(const valarray< _Tp > &)
Logical and corresponding elements of v with elements of array.
valarray< _Tp > & operator*=(const valarray< _Tp > &)
Multiply elements of array by corresponding elements of v.
_UnaryOp< __negate >::_Rt operator-() const
Return a new valarray by applying unary - to each element.
valarray< _Tp > & operator%=(const valarray< _Tp > &)
Modulo elements of array by corresponding elements of v.
valarray< _Tp > & operator&=(const _Tp &)
Set each element e of array to e & t.
valarray< _Tp > & operator|=(const _Tp &)
Set each element e of array to e | t.
Reference to one-dimensional subset of an array.
Reference to multi-dimensional subset of an array.
Reference to selected subset of an array.
Reference to arbitrary subset of an array.
Class defining multi-dimensional subset of an array.
Class defining one-dimensional subset of an array.