size()函数和max_size()函数在std中的区别是什么::C++中的数组?
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 */
jucafojl1#
size()函数和max_size()函数在std中的区别是什么::C++中的数组?后者有前缀max_。对于std::array,它们之间没有其他实际区别。区别是概念上的。size是容器中元素的当前数量,而max_size是容器可以具有的元素数量的理论上限。由于std::array中的元素数量是常数,因此元素的当前数量与可以存在的元素数量完全相同。对于其他容器,存在实际差异。使用std::array的max_size成员函数在概念上是愚蠢的,它的存在是为了使std::array符合Container的概念(例如命名要求),这允许它与其他容器统一使用,这在模板中是有用的。
max_
std::array
size
max_size
Container
ve7v8dk22#
我认为max_size()指的是数组的容量,而不是数组的实际大小。
toe950273#
size()表示数组中元素的数量,max_size()表示数组的容量,但在数组中,我们无法决定哪个数据项有效或哪个无效。我们写array〈int,5〉={1};则建立的数组为{1,0,0,0,0};则不能将0视为无效项。因此,size()和max_size()给予的答案与我们甚至在未初始化数组时相同,则它也具有垃圾值,并将其视为数组中的元素,然后为size()和max_size()给出相同的输出。理论上,size()给出元素数和max_size()给予容量,但数组在从任意垃圾值开始的所有索引处都有元素,0或由用户放置,因此我们得到相同的输出。
3条答案
按热度按时间jucafojl1#
size()函数和max_size()函数在std中的区别是什么::C++中的数组?
后者有前缀
max_
。对于std::array
,它们之间没有其他实际区别。区别是概念上的。
size
是容器中元素的当前数量,而max_size
是容器可以具有的元素数量的理论上限。由于std::array
中的元素数量是常数,因此元素的当前数量与可以存在的元素数量完全相同。对于其他容器,存在实际差异。使用
std::array
的max_size
成员函数在概念上是愚蠢的,它的存在是为了使std::array
符合Container
的概念(例如命名要求),这允许它与其他容器统一使用,这在模板中是有用的。ve7v8dk22#
我认为max_size()指的是数组的容量,而不是数组的实际大小。
toe950273#
size()表示数组中元素的数量,max_size()表示数组的容量,但在数组中,我们无法决定哪个数据项有效或哪个无效。我们写array〈int,5〉={1};则建立的数组为{1,0,0,0,0};则不能将0视为无效项。因此,size()和max_size()给予的答案与我们甚至在未初始化数组时相同,则它也具有垃圾值,并将其视为数组中的元素,然后为size()和max_size()给出相同的输出。理论上,size()给出元素数和max_size()给予容量,但数组在从任意垃圾值开始的所有索引处都有元素,0或由用户放置,因此我们得到相同的输出。