21xrx.com
2024-06-03 03:23:06 Monday
登录
文章检索 我的文章 写文章
如何用C++输出数组长度
2023-07-05 19:13:45 深夜i     --     --
C++ 输出 数组长度

在使用C++编写程序时,有时需要获取数组的长度。获取数组长度的方法与数组类型相关。下面介绍使用C++输出数组长度的几种方式。

方法一:使用sizeof运算符

sizeof运算符可以获取数组占用内存的字节数。因此,可以使用该运算符求出数组的长度。例如:


int arr[] = 2;

int len = sizeof(arr) / sizeof(arr[0]);

std::cout << len << std::endl;

该代码段中,首先定义一个包含三个元素的整型数组,然后使用sizeof运算符计算数组占用内存的字节数,再除以数组中每个元素占用的字节数,即可得到数组的长度3,并使用cout输出。

需要注意的是,sizeof运算符的操作数必须是数组名,而不是指针。如果使用指针作为操作数,则sizeof运算符会返回指针占用内存的字节数,而不是数组的长度。

方法二:使用STL库

C++标准模板库(STL)提供了一种更便利的获取数组长度的方法,即使用标准容器vector。vector是一个动态数组,可以根据需要动态增减大小。可以使用vector的size()成员函数获取数组长度。例如:


#include <vector>

std::vector<int> arr = 1;

int len = arr.size();

std::cout << len << std::endl;

该代码段中,首先定义一个包含三个元素的vector,然后使用size()成员函数获取数组长度3,并使用cout输出。

需要注意的是,使用vector会带来额外的内存开销和性能损失,因此只有在需要动态增减数组大小时才建议使用vector。

方法三:使用模板函数

由于C++数组在传递给函数时会自动转化为指针,因此不能在函数内部获取数组长度。不过,可以通过定义模板函数来获取数组长度。例如:


template <typename T, size_t N>

void print_size(T(&)[N])

  std::cout << N << std::endl;

int main() {

  int arr[] = 3;

  print_size(arr);

  return 0;

}

该代码段中,定义一个模板函数print_size,该函数的参数类型为指向包含N个元素的类型为T的数组的引用,函数体内输出数组长度N。在main函数中,定义一个包含三个元素的整型数组arr,然后调用print_size函数获取数组长度。

需要注意的是,由于模板函数在编译期间实例化,因此不能在运行时改变数组大小。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复