C++ slice类
创始人
2024-02-10 10:34:03

19 C++ slice类

19.1 简介

定义头文件:在cstdlib头文件中 三个参数start,number,stride:start表示选中的第一个元素的索引;number表示选中的数据个数;stride表示步进值 如何选中元素的:从start指向的元素开始作为第一个元素,start+n*stride选中第n的元素,直到选中number个元素 应用:使用一维valarray存储二维数组

19.2 举例

代码

/*
Project name :          _30slice
Last modified Date:     2022年4月20日10点28分
Last Version:           V1.0
Descriptions:           切片操作
*/
​
/*
slice类:定义头文件:在cstdlib头文件中三个参数start,number,stride:start表示选中的第一个元素的索引;number表示选中的数据个数;stride表示步进值如何选中元素的:从start指向的元素开始作为第一个元素,start+n*stride选中第n的元素,直到选中number个元素应用:使用一维valarray存储二维数组
*/
#include 
#include 
#include 
const int SIZE = 12;
typedef std::valarray vint; // simplify declarations
void show(const vint& v, int cols);
int main()
{using std::slice; // from using std::cout;vint valint(SIZE); // think of as 4 rows of 3int i;for (i = 0; i < SIZE; ++i)valint[i] = std::rand() % 10;cout << "Original array:\n";show(valint, 3); // show in 3 columnsvint vcol(valint[slice(1, 4, 3)]); // extract 2nd columncout << "Second column:\n";show(vcol, 1); // show in 1 columnvint vrow(valint[slice(3, 3, 1)]); // extract 2nd rowcout << "Second row:\n";show(vrow, 3);valint[slice(2, 4, 3)] = 10; // assign to 2nd columncout << "Set last column to 10:\n";show(valint, 3);cout << "Set first column to sum of next two:\n";// + not defined for slices, so convert to valarrayvalint[slice(0, 4, 3)] = vint(valint[slice(1, 4, 3)])+ vint(valint[slice(2, 4, 3)]);//为什么要加vint(),是因为slice()没有重载+操作符show(valint, 3);return 0;
}
void show(const vint& v, int cols)
{using std::cout;using std::endl;int lim = v.size();for (int i = 0; i < lim; ++i){cout.width(3);cout << v[i];if (i % cols == cols - 1)cout << endl;elsecout << ' ';}if (lim % cols != 0)cout << endl;
}

运行结果

Original array:1   7   40   9   48   8   24   5   5
Second column:7985
Second row:0   9   4
Set last column to 10:1   7  100   9  108   8  104   5  10
Set first column to sum of next two:17   7  1019   9  1018   8  1015   5  10
​
D:\Prj\_C++Self\_30slice\x64\Debug\_30slice.exe (进程 2604)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...