C++ 如何获取数组/容器的长度?

1,854 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、获取数组的长度

1、sizeof(a)/sizeof(*a)

C++没有专门求数组长度的内置函数,传统获取 C / C++数组长度的方法是使用 sizeof() 函数:

int a[]={1,2,3,4,5};
cout<<sizeof(a)/sizeof(*a)<<endl;    //5

根据编译器会将数组自动转为指针的性质,*a其实就是 a[0],所以 sizeof(a)/sizeof(a[0]) 就是数组长度。

2、end(a)-begin(a)

学习了STL标准库之后,我们也可以用迭代器begin()和end()来计算数组长度,该方法也适用于所有标准库容器。

int a[]={1,2,3,4,5};
cout<<end(a)-begin(a)<<endl;     //5

这里需要注意:SLT标准库容器使用迭代器的方法是 v.begin()和 v.end(),但数组不能写成 a.begin()和 a.end(),否则会报错。

二、获取标准库容器的长度

两种方法:

vector<int> v={1,2,3,4,5};
cout<<v.size()<<endl;       //5
cout<<v.end()-v.begin()<<endl;     //5

标准库容器可以通过size()成员函数获取其长度,也可以通过迭代器 v.end()-v.begin() 计算容器长度。