std::array——size()和max_size()的区别

  • 本文关键字:size 区别 std array max c++ stl
  • 更新时间 :
  • 英文 :


c++中std::array的size()和max_size()函数的区别是什么?

array<int,5> arr{ 1, 2, 3, 4, 5 }; 
cout << arr.size(); 
/* Output : 5 */ 

array<int, 5> arr{ 1, 2, 3, 4, 5 }; 
cout << arr.max_size(); 
/* Output : 5 */

c++中std::array的size()和max_size()函数的区别是什么?

前缀为max_。对于std::array,它们之间没有其他实际差异。

区别是概念上的。size是容器中元素的当前数量,max_size是容器中元素数量的理论上限。由于std::array中的元素数量是恒定的,因此当前的元素数量与可能存在的元素数量完全相同。对于其他容器,有一个实际的区别。

使用std::arraymax_size成员函数在概念上是愚蠢的。它的存在是为了使std::array符合Container的概念(例如命名需求),这允许它与其他容器统一使用,这在模板中是有用的。

我认为max_size()指的是数组的容量,而不是数组的实际大小。

size()告诉数组中元素的数量,max_size()告诉数组的容量,但在数组中,我们无法决定哪个数据项有效或无效。当我们写array<int,5>={1};然后构建的数组为{1,0,0,0,0};那么它就不能将0视为无效项。因此size()和max_size()给出相同的答案就像在当我们在没有初始化的情况下创建数组时,它也有垃圾值,并且它将其视为数组中的元素,然后为size()和max_size()给出相同的输出。理论上size()给出元素数量,max_size()给出容量,但数组中所有元素的索引从以太垃圾值开始,0或由用户放置,因此我们得到相同的输出。

相关内容

  • 没有找到相关文章

最新更新