六、STL的数值计算---数组(向量)运算---数组子集类-slice类和slice_array类模板
来源:互联网 发布:淘宝申请退款会不退吗 编辑:程序博客网 时间:2024/06/02 00:28
2.数组子集类—slice类和类模板slice_array
- slice是切割的意思,即将一个向量作为任意维度的数组来处理。
- “切割”操作是在一个valarray中,中间距离为n的多个元素。
- slice的跨步是切割两个元素的距离(间隔的下标个数)
1.slice类
- std::slice 是选择器类,一个 std::slice
- 类型的对象保有三个值:起始下标,跨度,及子集中的值的总数。std::slice 类型的对象可用作 valarray 的 operator[] 的下标。
类原型:
//定义于头文件 <valarray>class slice;
构造函数:
slice();slice( std::size_t start, std::size_t size, std::size_t stride );slice( const slice& other );
说明:三个函数都是构造一个新切片
1. 第一种: 默认构造函数
2. 第二种:
1. start:首元素的位置
2. size: 切片中的元素数
3. stride: 切片前后的间距
可以得到每个切片的位置:
1. start + 0*stride
2. start + 1*stride
3. …
4. start + (size-1)*stride
3. 第三种: other:另一个切片 ,构造other的副本
切割可以从一个数组中提出部分元素,成为一个新的数组(valarray)。
使用slice可以创建数组的各种各样的子集。(stl没有矩阵类)
- 矩阵的表示即是一个valarray
- slice的方式: 使得valarray类型数组拥有维度
slice_array: 为slice提供内部辅助运算的类别。
- 对用户来说,slice_array类完全透明
- slice_array的构造函数和赋值操作都是私有的;
slice_array类的定义的操作:
(1). 赋值内容
(2).赋值给另一个valarray
(3).调用任何一个赋值符合运算
如果要完成其他操作,需要将子集转换成valarray数组;
例子:
//---------------------省略--------------------valarray<int> val_1 = { 1, 2, 3, 4, 5, 6, 7,8,9 };valarray<int> val_2 = val_1[slice(0,2,3)];cout << "val_2:";copy(begin(val_2), end(val_2), ostream_iterator<int>(cout, " "));cout << endl;//------------------省略-------------------
如果我们把val_1看做(3,3)的矩阵,我们取第一列为:
输出结果为:
val_2:1 4 7
阅读全文
0 0
- 六、STL的数值计算---数组(向量)运算---数组子集类-slice类和slice_array类模板
- 六、STL的数值计算---数组(向量)运算---gslice类和gslice_array类模板
- 六、STL的数值计算---向量(数组)运算--valarray类
- 六、STL的数值计算---数组(向量)运算---mask_array类
- 六、STL的数值计算---数组(向量)运算---indirect_array类
- 数组的slice方法和类数组
- 六、STL的数值计算---复数运算
- 数组和向量类
- 计算数组子集
- MATLAB学习笔记(六):数值数组及向量化运算(数组创建)
- 数组 slice 和splice
- 模板之类模板(数组类模板)
- 向量类的加减运算和比较
- 数组对象的slice和splice方法
- JavaScript的slice()和splice()数组方法
- 数组中splice和slice的区别
- 数组的slice()和splice()方法
- 数组类运算的实现
- Large Division LightOJ
- 程序设计竞赛小技巧
- webserver soap wsdl 整理运用
- 51nod 正整数分组 01背包
- 线性判别分析(Linear discriminant analysis)
- 六、STL的数值计算---数组(向量)运算---数组子集类-slice类和slice_array类模板
- Fy's dota2
- VINS 代码学习(一)--feature_tracker 代码
- 使用Apache中的HttpClient的实例CloseableHttpClient进行http请求
- 微信小程序商店域名由wxapp.dreawer.com永久更换为:store.dreawer.com
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- servlet request getHeader(“x-forwarded-for”) 获取真实IP
- python 小型学生管理,第一次接触python感觉挺好玩的,不喜勿喷
- 解决禁止浏览器回弹效果后页面其它元素滚动事件失效