HsOjo’s Blog

📒 A powerless rookie's tree hole.

C++之获取数组长度

2018-10-3100 分钟
type
status
date
slug
summary
tags
category
icon
password

前言

在研究数组排序的过程中,发现了个很基础的问题–如何获取数组长度(成员数)。
似乎C++并没有提供获取数组长度的方法,网上搜索得知sizeof可以计算变量大小,可以通过获取数组大小/成员大小的办法得到数组长度。
当我将这个计算数组长度的方法封装起来时,发现事情并不简单。

引用类型

编译时说明了原因所在。
个人理解大概意思就是把数组传入函数,会变成引用类型(指针),即sizeof取得的是指针的size。
详情参考:点击查看
那就操蛋了,程序不封装好,每次想获取长度都tm要写一次sizeof的话,那就太傻逼了。
网上搜索了一下资料,似乎没有办法(不含复制)直接取出指针指向的数组。

模版类型

在做数组排序时,需要交换变量,搜索资料的时候发现了一种操作。
于是乎,尝试抄袭一下,正确获取到了数组长度。
原来只打算做int型数组排序的,结果,套用了这个template之后,全类型数值排序都实现了。
参考资料:点击查看

后话

如果想要简单获取length,也许该用vector
以下为本文实现的排序代码。

下一篇

Python生成正则测试数据

Loading...