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::array
的max_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或由用户放置,因此我们得到相同的输出。