C++中如何求数组长度

2023-05-16

C++中没有直接提供求数组长度的方法,提供了sizeof(),begin(),end()等方法,可以供求数组长度使用。

可以通过两种方式来求数组长度,这里使用模版类。一个是使用sizeof()做除法,另一种办法是通过end(),begin()做减法。代码如下。


#include <iostream>
#include <string>
using namespace std;
template <class T>
int getArrSize(T& arr){
	return sizeof(arr) / sizeof(arr[0]);
}

template <class T>
int getArrLength(T& arr){
    return end(arr) - begin(arr);
}
int main(){
    string arr[] = {"a","b","c","e","f"};
    int arr2[] = {1,3,4,5};
    //string arr
    cout<<"sizeof(arr): "<<sizeof(arr)<<endl;
    cout<<"sizeof(arr[0]): "<<sizeof(arr[0])<<endl;
    cout<<"end(arr): "<<end(arr)<<endl;
    cout<<"begin(arr): "<<begin(arr)<<endl;
    cout<<"size of arr: "<<getArrSize(arr)<<endl;
    cout<<"length of arr:"<<getArrLength(arr)<<endl;

    //int arr
    cout<<"===================="<<endl;
    cout<<"sizeof(arr): "<<sizeof(arr2)<<endl;
    cout<<"sizeof(arr[0]): "<<sizeof(arr2[0])<<endl;
    cout<<"end(arr): "<<end(arr2)<<endl;
    cout<<"begin(arr): "<<begin(arr2)<<endl;
    cout<<"size of arr: "<<getArrSize(arr2)<<endl;
    cout<<"length of arr:"<<getArrLength(arr2)<<endl;
	return 0;
}  

运行结果如下:


sizeof(arr): 120
sizeof(arr[0]): 24
end(arr): 0x7fff5a35b5d8
begin(arr): 0x7fff5a35b560
size of arr: 5
length of arr:5
====================
sizeof(arr): 16
sizeof(arr[0]): 4
end(arr): 0x7fff5a35b560
begin(arr): 0x7fff5a35b550
size of arr: 4
length of arr:4  

对于第一种求数组长度的办法,可能不是很明白,为什么需要sizeof()之后,需要除以sizeof(arr[0])。这里有几点需要注意:

1、sizeof不是函数,是操作符,它是编译时求一个类型所占的字节数。

2、sizeof(arr):以长度4的int数组为例,其实求出了int类型数组所占总长度4*4=16。然后需要按照任意一个类型长度其实就是4来做除法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中如何求数组长度 的相关文章

  • Window安装Anaconda后,conda不是内部或者外部命令

    今天在安装Theano的时候 xff0c 需要看一下 xff0c anaconda已经安装了哪些包 使用命令如下 在控制台 xff0c cmd回车输入即可 xff1a conda list 但是 xff0c 显示出错 xff0c conda
  • zookeeper集群环境搭建

    zookeeper是一个分布式框架 xff0c 它的用途在今天非常广泛 xff0c 通常与dubbo一起构成分布式系统 xff0c 另外kafka消息系统也自带了zookeeper hadoop集群也少不了zookeeper xff0c z
  • hadoop-2.8.0完全分布式环境搭建

    一 机器及环境准备 1 jdk安装不用多说 xff0c 安装完成配置环境变量即可 export JAVA HOME 61 usr java latest export JRE HOME 61 JAVA HOME jre export CLA
  • Your password does not satisfy the current policy requirements解决办法

    mysql5 7 x安装以后 xff0c 想修改随机生成的密码为简单容易记忆的密码 xff0c 如root 123456等 xff0c 这时候通过修改密码的几种方式都不行 xff0c 出现密码不符合当前安全策略要求 为了解决这种问题 xff
  • redhat7安装oracle11gR2之环境准备

    redhat7安装oracle11gR2环境准备 xff1a 内存 xff1a 2g 磁盘空间 xff1a 15g以上 交换分区 xff1a 3g 我们将oracle安装到 opt app oracle目录下 xff0c 后面的环境变量则以
  • redhat7安装oracle11gR2之动手安装

    oracle11gR2 64位数据库下载地址 xff1a http www oracle com technetwork database enterprise edition downloads 112010 linx8664soft 1
  • redhat7静默安装oracle11gR2

    所谓的静默安装是指不用安装redhat7桌面系统 xff0c 并进入桌面利用界面安装oracle xff0c 这里采用最小化安装redhat7 xff0c 直接在命令行下通过命令执行安装 环境配置和用户设置基本和界面安装一致 就是进入 op
  • docker+nextcloud搭建个人云存储系统

    一 docker安装和启动 yum install epel release yum install docker service docker start 二 docker compose安装 curl L http github com
  • kafka集群搭建以及运行kafka监控平台kmonitor

    kafka集群搭建 kafka依赖zookeeper运行 xff0c 在搭建kafka系统之前需要搭建zookeeper集群 xff0c 这里先略过zookeeper集群搭建的过程 另外 xff0c kafka需要运行在jdk环境中 xff
  • CDH5安装失败如何重新安装

    cdh安装失败的原因可能有以下原因 xff1a 1 机器内存不足 xff0c server节点我用了6G xff0c 两个agent节点均是4G才安装成功 2 需要的mysql驱动文件没有拷贝到指定位置 具体重新安装步骤如下 xff1a 一
  • nginx日志切割和日志定期清理

    nginx日志默认不做人为处理 xff0c 日志文件会存放在access log error log两个文件中 xff0c 随着时间的推移 xff0c 日志量会越来越大 xff0c 不方便编辑查看 xff0c 为了让日志按天存放 xff0c
  • 结构体(参数、嵌套)、结构体指针、结构体中const的使用场景

    结构体 xff1a 属于用户自定义的数据类型 xff0c 允许用户存储不同的数据类型 xff1b 结构体定义和使用 通过结构体创建变量的方式有三种 xff1a struct 结构体名 变量名struct 结构体名 变量名 61 成员1 xf
  • CentOS7.3安装mesos1.4.0

    按照官网一步一步安装mesos 这里选择的版本是1 4 0 download mesos wget http archive apache org dist mesos 1 4 0 mesos 1 4 0 tar gz tar xzf me
  • redhat7上rpm方式安装mongodb

    1 下载相关文件 xff0c 下载地址 xff1a http mirrors aliyun com mongodb yum redhat 7 mongodb org stable x86 64 RPMS mongodb org 3 2 9
  • mongodb集群搭建之Replica-Set方式

    mongodb集群搭建有三种方式 1 Master Slave模式 2 Replica Set方式 3 Sharding方式 其中 xff0c 第一种方式基本没什么意义 xff0c 官方也不推荐这种方式搭建 另外两种分别就是副本集和分片的方
  • solr5.5.5入门实例

    solr是apache开源的搜索引擎 xff0c 底层基于lucene 将lucene难以使用的api 通过封装 xff0c 为用户提供方便的接口 solr国内下载地址 xff1a https mirrors cnnic cn apache
  • redis4.0.2版本集群搭建

    redhat7下redis源码编译安装 xff0c 需要先安装pcre openssl等依赖 yum install openssl devel pcre devel 然后下载redis 4 0 2 tar gz xff0c 解压 xff0
  • Redis-Cluster操作详解

    redis在2 8版本中支持分布式的部署 xff0c 但不是真正意义上的集群 xff0c 单独操作一台主机获取相应key 如果这个key没有落在该机器上 xff0c 那么就获取不到 只有分片在该机器上才能获取到 redis从3 0版本开始支
  • flink快速入门及采坑记录

    apache flink作为第四代mapreduce计算框架 xff0c 已经得到越来越多的应用 xff0c 这里介绍如何快速入门 xff0c 以及记录一个内存错误的问题 1 安装jdk 2 下载flink 并解压 wget https m

随机推荐

  • 没有为扩展名.py找到关联文件解决办法

    如题 xff0c 在win7上安装python3 5之后 xff0c 通过pip install awscli命令行 xff0c 最后执行aws命令时总是先提示一句 34 没有为扩展名 py找到关联文件 34 xff0c 然后显示执行结果
  • No configuration found for this host:tier1

    flume启动时 xff0c 如果没有通过参数 name 或者 n 指定代理 xff0c 那么默认使用tier1作为代理名称 xff0c 启动成功后 xff0c 不会报错 xff0c 但是可能会提示如题警告 flume conf配置文件默认
  • linux下通过pip安装最新uwsgi

    通过yum install uwsgi 安装的uwsgi在进行测试的时候 xff0c 发现版本是2 0 15 但是启动uwsgi测试的时候报参数错误 xff0c 后来改用pip安装 先yum remove uwsgi删除老的uwsgi 就成
  • 将原有python复制到anaconda虚拟环境后,可以激活但是不显示的问题

    第一步参考 如何在已安装Python条件下 xff0c 安装Anaconda xff0c 并将原有Python添加到Anaconda中 amazingym 博客园 发现conda info e 不显示环境 xff0c 但是用文件夹名称可以顺
  • pip更改国内源

    默认情况下 xff0c pip安装一个工具 xff0c 是通过使用官方的源 https pypi python org simple xff0c 速度上是一个很大的问题 xff0c 例如 xff0c 安装tensorflow 默认第一个下载
  • win7+vmware12+mac10.10安装过程

    win7 43 vmware12安装mac10 11 10 12 10 13均失败 xff0c 最终安装mac10 10成功 xff0c 不知道是不是硬件不支持 这里记录一下mac10 10虚拟机安装的过程 默认情况下 xff0c vmwa
  • mac虚拟机安装之后需要做这些

    一 让mac使用体验更好 mac虚拟机安装完成之后 xff0c 需要让系统用起来顺畅 xff0c 鼠标滑动平稳 xff0c 需要安装vmware tools工具 这里需要下载vmwaretools镜像 我这里名字叫 VMware 43 To
  • mac系统pip安装package路径问题

    默认情况下 xff0c 通过pip安装会提示Permission Denied 这时候通过sudo pip install xxx可以安装 xff0c 但是安装的路径不是系统默认的路径 xff0c 再次通过pip list列出已经安装过的工
  • xcrun: error: invalid active developer path解决办法

    mac下如果安装过xcode 之后又卸载 xff0c 再使用git等命令时就提示错误 invalid active path Applications Xcode app Contents Developer 一般情况可以通过xcode s
  • Hue安装与配置

    Hue是cloudera提供的hadoop ui 利用它可以很直观的操作和查看hadoop生态应用 一般安装cloudera manager之后会自动带有hue管理界面 xff0c 通过http hueserver 8888即可访问 另外
  • aapt查看apk应用信息

    aapt是Android asset package tools 利用aapt命令可以很方便的查看app包信息 linux下安装配置aapt 先下载aapt 然后放入 usr bin目录 xff0c 并改变权限为可执行文件 aapt帮助 以
  • Git-TortoiseGit使用报错:cannot spawn xxx\bin\ssh.exe: No such file or directory fatal

    一般开发都是用eclipse自带的git插件提交代码 xff0c 今天试了一把TortoiseGit的提交 结果报错 查看TortoiseGit gt Settings xff1a 发现这里环境变量和设置的环境变量不一致 xff0c 猜测是
  • windows+spark本地运行环境搭建

    spark作为一个内存mapreduce框架 xff0c 速度是hadoop的10倍甚至100倍 windows下可以通过简单设置 xff0c 搭建本地运行环境 1 下载spark预编译版本 xff0c spark运行环境依赖jdk sca
  • git clone 报错:Peer reports incompatible or unsupported protocol version解决办法

    git通过git clone下载github上的资源到机器上 xff0c 结果出现如题所示的错误 root 64 server data git clone https github com pingcap tidb docker comp
  • explian使用介绍

    1 xff09 id列数字越大越先执行 xff0c 如果说数字一样大 xff0c 那么就从上往下依次执行 xff0c id列为null的就表是这是一个结果集 xff0c 不需要使用它来进行查询 2 xff09 select type列常见的
  • centos7安装rustup

    rust安装 xff0c 因为被墙的原因 xff0c 在国内几乎很难安装 xff0c 需要通过代理安装 但是rustup却很容易 xff0c 一般在linux下 xff0c 通过官方指定的下列语句 xff0c 基本可以安装rustup cu
  • TiDB在Centos7上通过源码编译安装

    这里难以编译安装的是tikv tidb的三大部分tidb pd tikv中tidb pd均是采用go语言编写 xff0c 安装go语言包即可编译 xff0c 唯独tikv是采用rust语言写的 xff0c 他的编译是最复杂的 而且编译环境非
  • Cloudera Manager 5.12.0图文详解安装过程

    这里介绍的是cdh5的离线安装方式 xff0c 需要的文件提前准备好 xff0c 安装过程会快一些 安装前提 xff1a 机器配置内存一定要高 xff0c 我这里安装的虚拟机均是redhat7 xff1a 内存分别是6G 4G 4G 准备的
  • Failed to get D-Bus connection: Operation not permitted

    docker容器centos7中 xff0c 通过systemctl start service出现下错误 Failed to get D Bus connection Operation not permitted docker中的容器启
  • C++中如何求数组长度

    C 43 43 中没有直接提供求数组长度的方法 xff0c 提供了sizeof begin end 等方法 xff0c 可以供求数组长度使用 可以通过两种方式来求数组长度 xff0c 这里使用模版类 一个是使用sizeof 做除法 xff0