c++ std::数组-size()和max_size()之间的差值

zqdjd7g9  于 2023-02-06  发布在  其他
关注(0)|答案(3)|浏览(150)

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 */
jucafojl

jucafojl1#

size()函数和max_size()函数在std中的区别是什么::C++中的数组?
后者有前缀max_。对于std::array,它们之间没有其他实际区别。
区别是概念上的。size是容器中元素的当前数量,而max_size是容器可以具有的元素数量的理论上限。由于std::array中的元素数量是常数,因此元素的当前数量与可以存在的元素数量完全相同。对于其他容器,存在实际差异。
使用std::arraymax_size成员函数在概念上是愚蠢的,它的存在是为了使std::array符合Container的概念(例如命名要求),这允许它与其他容器统一使用,这在模板中是有用的。

ve7v8dk2

ve7v8dk22#

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

toe95027

toe950273#

size()表示数组中元素的数量,max_size()表示数组的容量,但在数组中,我们无法决定哪个数据项有效或哪个无效。我们写array〈int,5〉={1};则建立的数组为{1,0,0,0,0};则不能将0视为无效项。因此,size()和max_size()给予的答案与我们甚至在未初始化数组时相同,则它也具有垃圾值,并将其视为数组中的元素,然后为size()和max_size()给出相同的输出。理论上,size()给出元素数和max_size()给予容量,但数组在从任意垃圾值开始的所有索引处都有元素,0或由用户放置,因此我们得到相同的输出。

相关问题