首页 > 其他分享 >valarray类常见操作

valarray类常见操作

时间:2024-09-03 10:14:49浏览次数:4  
标签:10 cout show 常见 数组 操作 valarray valarr6

#include <iostream>
#include <valarray>
#include <cstdlib>
#include <cmath>

using namespace std;

/*
valarray是一个数值计算类,主要用于处理数值数组
使用valarray需引入valarray头文件
valarray处于std名称空间中
valarray是一个模板类,需要指定类型
*/


// valarray类数据的打印输出
template <typename T>
void show(valarray<T> valarr){
for(T temp : valarr)
cout << temp << " ";
cout << endl;
// 也可以用传统的for循环,可以使用valarr.size()获取“数组”的长度
/*
for(int i=0;i<valarr.size();i++)
cout << valarr[ib] << " ";
cout << endl;
*/
}

// 对x取反,用于测试apply成员函数
int fun1(int x){
return x>0 ? 0-x : abs(x);
}

int main(){
/******************** 初始化 ********************/

// 初始化方式1,创建一个长度为3的int“数组”,默认填充0
valarray<int> valarr1(3);
show(valarr1); // 输出:0 0 0

// 初始化方式2,创建一个长度为5的double“数组”,默认以2.0填充
valarray<double> valarr2(2.0, 5);
show(valarr2); // 输出2 2 2 2 2

// 初始化方式3,使用已有的数组进行填充,char也是数值类型
// 注:"Hello world!"代表数组指针,7代表创建的“数组”长度,也即截取长度
valarray<char> valarr3("Hello world!", 7);
show(valarr3); // 输出:H e l l o w

// 列表初始化方式
valarray<double> valarr4{1.0, 3.0, 5.0, 7.0};
show(valarr4); // 输出:1 3 5 7

// 批量初始化
valarray<int> valarr5(6);
// 将所有元素初始化为10
valarr5 = 10;
show(valarr5); // 输出:10 10 10 10 10 10


/******************** 数据操作 ********************/

// 创建一个长度为0的空“数组”
valarray<double> valarr6;
// 修改valarr6长度为6,默认使用0填充
valarr6.resize(5);
show(valarr6); // 0 0 0 0 0
// 修改valarr6长度为3,并用1.6填充
// resize操作相当于重新创建了一个“数组”,原来的数据清空
valarr6.resize(3,1.6);
show(valarr6); // 1.6 1.6 1.6

// 对数据批量+操作,相当于for遍历每个元素并+1.5
// -= *= /= %=等常见操作均适用
valarr6 += 1.5;
show(valarr6); // 3.1 3.1 3.1

valarray<int> valarr7{1, -3, 5, -7};
// 使用fun1函数对valarr7中的每个元素进行取反操作,返回一个新的valarray对象
// apply入参只支持函数名或者函数的引用,不支持lambda表达式
// valarr7.apply([](double x){return x>0 ? 0-x : abs(x);});
valarray<int> valarr8 = valarr7.apply(fun1);
show(valarr8); // -1 3 -5 7

// 找最大值最小值及求和
cout << "最大值:" << valarr8.max() << endl; // 最大值:7
cout << "最小值:" << valarr8.min() << endl; // 最小值:-5
cout << "求和:" << valarr8.sum() << endl; //求和 :4

// valarr4{1.0, 3.0, 5.0, 7.0} valarr6{3.1, 3.1, 3.1}
// 两个valarray对象间的加减乘除
// 以第一个对象为基准,对相同位置的元素执行加/减/乘/除操作并返回新的valarray对象
valarray<double> valarr9 = valarr4 + valarr6;
show(valarr9); // 4.1 6.1 8.1 7
valarray<double> valarr10 = valarr6 + valarr4;
show(valarr10); // 4.1 6.1 8.1
valarray<double> valarr11 = sqrt(valarr10); // 对每个元素开平方的操作
show(valarr11); // 2.02485 2.46982 2.84605

return 0;
}

标签:10,cout,show,常见,数组,操作,valarray,valarr6
From: https://www.cnblogs.com/exception999/p/18394048

相关文章

  • 洛谷题单指南-常见优化技巧-P2032 扫描
    原题链接:https://www.luogu.com.cn/problem/P2032题意解读:求滑动窗口内的最大值,典型的单调队列应用。解题思路:单调队列的三部曲:1、去头。已存入的元素个数超过k,则去头。注意队列里存的是元素下标,只需要用当前下标减去队头元素来判断即可。2、去尾。根据单调队列的单调性,如果......
  • VUE安装操作手册
    1、安装node.js首先需要确保自己以前是否下载过,如果有则卸载,然后点击如下网址即可进行下载安装。https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v16.14.2/node-v16.14.2-x64.msi安装时的具体步骤如下: 特别说明:如果你的C盘空间不足,你也可以选择安装在其他的盘符......
  • 顺序结构存储的线性表操作【作业代码 1】
    顺序结构存储的线性表操作顺序结构存储的线性表是一种使用连续内存空间来存储元素的数据结构。在这种结构中,元素之间的相对位置通过物理存储位置直接反映出来,即元素在内存中的地址是连续的。下面,我们将基于您提供的代码片段,详细讨论顺序结构线性表的基本操作,包括初始化、查......
  • 探索Groovy的Elvis操作符及其在Java中的替代方案
    在编程的世界里,我们经常需要处理变量的默认值问题,尤其是在变量可能为null的情况下。Groovy语言提供了一种优雅的方式来处理这种情况,那就是Elvis操作符。本文将探讨Elvis操作符的用法,并展示如何在Java中实现类似的功能。Elvis操作符简介Elvis操作符(?:)是Groovy语言中的一种......
  • unity的异步操作
    1.C#提供了两个关键字来实现异步async和awaitasync 关键字用于声明一个异步方法。该方法内部可以使用 await 关键字来等待异步操作的完成。当方法被标记为 async 时,它隐式地表示该方法可能会包含一个或多个 await 表达式。重要的是要注意,async 方法通常会返回一个 Task......
  • Capital许可管理常见问题解答
    在软件资产管理过程中,企业经常会遇到各种关于许可管理的问题。这些问题不仅影响软件的合规使用,还可能导致不必要的法律风险和成本浪费。作为专业的软件许可管理解决方案提供商,Capital致力于帮助企业轻松应对这些挑战。以下是Capital许可管理中常见的问题及其解答,助您更好地理解和......
  • DBA福利:云原生分布式数据库 PolarDB-X 操作指南
    DBA福利:云原生分布式数据库PolarDB-X操作指南前言准备工作在Windows上准备测试环境环境操作说明安装PXD使用PXD一键安装PolarDB-X方式一方式二操作说明体验PolarDB-X源码编译安装PolarDB-X编译PolarDB-XDN体验感受前言作为开发者,数据库可以说与开发者息息相关,一个系统是否......
  • 【C语言】文件操作(详解)
    文章目录1.为什么需要文件?2.什么是文件?2.1文件分类2.2文件名3.文件的使用3.1文件指针3.2打开和关闭文件3.2.1文件使用方式3.2.2标准输入输出流3.3文件输入输出函数3.3.1字符输入输出实现文件拷贝3.3.2文本行输入输出3.3.3格式化输入输出3.3.4二进制输入输出3.3.5sscanf/sprintf函......
  • Hive(二)DML数据操作语言
    DML数据操作一、数据导入1、向表中装载数据hive>loaddata[local]inpath'路径'[overwrite]intotable表名[partition(partcol1=val1,…)];(1)loaddata:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overw......
  • Vmware 上安装部署免费开源NAS系统FreeNAS11.3操作系统(支持CIFS (samba), FTP, NFS,
    说明FreeNAS®于2005年首次跃上互联网,在过去的十年里,它已成为一个家喻户晓的名字,在全球拥有超过1000万次下载和100万次部署。FreeNAS是一套免费的NAS(网络附加存储)服务器解决方案,它基于FreeBSD和Python开发,能够将一台普通的PC转变为功能强大的网络存储服务器。概述类型:NA......