栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

valarray数值库学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

valarray数值库学习

c++标准库表数组形式的类有三个:array:固定长度,目的为代替内置数组如: int a[5] = {1,3,5,7,9};vector:支持变长度的类, valarray:是表示并操作值数组的类,面向数值计算设计,支持对元素进行数学运算,并且支持多种形式的广义下标运算符、切片及间接访问。
下面我们来看valarray的使用示例:

成员函数

(构造函数)

构造新的数值数组
(公开成员函数)

(析构函数)

析构数值数组
(公开成员函数)

operator=

为内容赋值
(公开成员函数)

operator[]

获取/设置 valarray 数组元素、切片或掩码
(公开成员函数)

operator+
operator-
operator~
operator!

对 valarray 的每个元素运用一元算术运算符
(公开成员函数)

>=">operator+=
operator-=
operator*=
operator/=
operator%=
operator&=
operator|=
operator^=
operator<<=
operator>>=

对 valarray 的每个元素应用复合赋值运算符
(公开成员函数)

swap

与另一 valarray 交换
(公开成员函数)

size

返回valarray的大小
(公开成员函数)

resize

更改 valarray 的大小
(公开成员函数)

sum

计算所有元素的和
(公开成员函数)

min

返回最小元素
(公开成员函数)

max

返回最大的元素
(公开成员函数)

shift

以填入零的方式移动 valarray 的元素
(公开成员函数)

cshift

循环移动 valarray 的元素
(公开成员函数)

apply

对 valarray 的每个元素应用函数
(公开成员函数)

1.valarray初始化

#include 
#include 

using namespace std;

//输出valarray
template 
void outValarray(const valarray& val)
{
    for(auto v: val)
        cout << v << "t";
    cout << endl;
}

int main()
{
    //1.创建一个大小为5的valarray
    valarray val(5);
    outValarray(val);

    //2.使用列表{1,3,5,7,9}初始化一个valarray
    valarray val2 = {1,3,5,7,9};
    outValarray(val2);

    //3.创建一个大小为5,值全为7的valarray
    valarray val3(7, 5);
    outValarray(val3);

    //4.使用数组初始化valarray
    int ia[] = {10,20,30,40,50};
    valarray val4(ia, sizeof(ia)/sizeof(ia[0]));
    outValarray(val4);

    //5.使用数组创建大小为3的valarray
    valarray val5(ia + 2, 3);
    outValarray(val5);

    //6.使用valarray进行数学运算
    val = (val2 + val4)*val4;
    outValarray(val);

    cout << "Hello World!" << endl;
    return 0;
}

运行结果:

2.valarray一元算术运算:

#include 
#include 

using namespace std;

//输出valarray
template 
void outValarray(const valarray& val)
{
    for(auto v: val)
        cout << v << "t";
    cout << endl;
}

int main()
{
    //1.operator+运算,给每个元素+11
    valarray val = {1,3,5,7,9};
    outValarray(val);
    val = val + 11;
    outValarray(val);

    //2.operator-运算,给每个元素-5
    val = val - 5;
    outValarray(val);

    //3.operator~运算,给每个元素~
    val = ~val;
    outValarray(val);

    //4.operator !运算,给每个元素!
    outValarray(!val);
    cout << "Hello World!" << endl;
    return 0;
}

运行结果:

 3.对valarray的每个元素应用复合赋值运算符:

#include 
#include 

using namespace std;

//输出valarray
template 
void outValarray(const valarray& val)
{
    for(auto v: val)
        cout << v << "t";
    cout << endl;
}

int main()
{
    //1. operator+=运算
    valarray val = {1,3,5,7,9};
    outValarray(val);
    val += 11;
    outValarray(val);
    //2. operator-=运算
    val -= 2;
    outValarray(val);
    //3. operator*=运算
    val *= 3;
    outValarray(val);
    //4. operator/=运算
    val /= 2;
    outValarray(val);
    //5. operator%=运算
    val %= 5;
    outValarray(val);
    //6. operator&=运算
    val &= 5;
    outValarray(val);
    //7. operator|=运算
    val |= 1;
    outValarray(val);
    //8. operator^=运算
    val ^= 2;
    outValarray(val);
    //9. operator<<=运算
    val <<= 2;
    outValarray(val);
    //10. operator>>=运算
    val >>= 1;
    outValarray(val);

    cout << "Hello World!" << endl;
    return 0;
}

运算结果:

 4.成员函数使用示例:

#include 
#include 

using namespace std;

//输出valarray
template 
void outValarray(const valarray& val)
{
    for(auto v: val)
        cout << v << "t";
    cout << endl;
}

int main()
{
    //1.swap 与另一 valarray 交换
    valarray val0 = {1,3,5,7,9};
    valarray val1 = {11,31,51,71,91};
    outValarray(val0);
    outValarray(val1);
    val0.swap(val1);
    cout << endl;
    outValarray(val0);
    outValarray(val1);
    cout << endl;
    //2.size返回valarray的大小
    valarray val2 = {1,3,5,7,9,11,13,15};
    cout << "val2.size===== "  << val2.size() << endl;
    cout << endl;
    //3.resize 更改 valarray 的大小
    valarray val3 = {1,3,5};
    outValarray(val3);
    val3.resize(5);
    outValarray(val3);
    val3.resize(6, 10);
    outValarray(val3);
    cout << endl;
    //4.sum 计算所有元素的和
    valarray val = {13,33,59,72,95,11,13,15};
    outValarray(val);
    cout << "val.sum===== "  << val.sum() << endl;
    cout << endl;

    //5.min返回最小元素
    cout << "val.min===== "  << val.min() << endl;
    cout << endl;
    //6.max返回最大的元素
    cout << "val.max===== "  << val.max() << endl;
    cout << endl;

    //7.shift	以填入零的方式移动 valarray 的元素
    valarray val4 = {13,33,59,72,95,11,15};
    outValarray(val4);
    valarray val5 = val4.shift(3);
    outValarray(val5);
    cout << endl;

    //8.cshift 循环移动 valarray 的元素
    valarray val6 = {13,33,59,72,95,11,15};
    outValarray(val6);
    valarray val7 = val6.cshift(3);
    outValarray(val7);
    cout << endl;

    //9.apply对 valarray 的每个元素应用函数
    valarray val8 = {3,32,59,72,95,11,15};
    outValarray(val8);
    val8 = val8.apply([](int n)->int{return n*2;});
    outValarray(val8);
    cout << "Hello World!" << endl;
    return 0;
}

运行结果:

参考:

- cppreference.com">标准库头文件 - cppreference.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号