【C++】std::valarray
valarray对象被设计用来保存一个值数组,并且可以轻松地对它们执行数学运算。
(1)构造
valarray<int> val(4);//0,0,0,0
valarray<int>va2(3,4);//3,3,3,3
int ia[]={1,2,3,4,5,6};
valarray<int> va3(ia,sizeof(ia)/sizeof(ia[0]));
valarray<int>va4(ia+1,4);//2,3,4,5
valarray<int>va5(va4);//2,3,4,5
valarray<int>va6(va3[std::slice(1,3,2)]);//2,4,6 std::slice是 C++ 标准库中用于操作 valarray 数据类型的工具类。从num1开始,选择num2个数字,间隔为num3
(2)成员函数
T min() const;//返回最小值
T max() const;//返回最大值
T sum() const;//返回valarray中所有元素的总和
size_t size() const;//返回valarray中的元素数
void resize (size_t sz, T c = T());//调整valarray的大小,将其大小更改为sz元素,并将值c分配给每个元素。调整大小后,前面的内容将丢失
void swap (valarray& x) noexcept;//交换*this和x的内容
valarray shift (int n) const;//返回valarray对象的副本,其元素左移n个空格(如果n为负数,则向右移动)
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
// n:要旋转的元素数。如果为正,则向左旋转。如果为负数,则向右旋转。
valarray cshift (int n) const;
//返回一个valarray,其中每个元素为传入func后进行处理的返回值
valarray apply (T func(T)) const;
valarray apply (T func(const T&)) const;
begin();//起始迭代器
end();//末尾迭代器
(3)运算符
+
-
*
/
%
^
>
<
==
!=
&&
||
!
//valarray和T进行运算,则每个元素都和T执行这个运算
//valarray和valarray进行运算,则对应元素执行这个运算
int init[] = { 10,20,30,40 };
// foo: bar:
std::valarray<int> foo(init, 4); // 10 20 30 40
std::valarray<int> bar(25, 4); // 25 25 25 25
bar += foo; // 35 45 55 65
foo = bar + 10; // 45 55 65 75
foo -= 10; // 35 45 55 65
std::valarray<bool> comp = (foo == bar);//每个元素都判定是否相等
if (comp.min() == true)
std::cout << "foo and bar are equal.\n";
else
std::cout << "foo and bar are not equal.\n";

浙公网安备 33010602011771号