std: :array -- size() 和 max_size() 之间的区别

std: :array -- difference between size() and max_size()

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

What is the difference between size() and max_size() functions for std: :array in C++?

后者有前缀max_std::array.

它们之间没有其他实际区别

区别是概念上的。 size 是容器中的当前元素数,max_size 是容器可以包含多少元素的理论上限。由于 std::array 中的元素数是常数,因此当前元素数与可能存在的元素数完全相同。对于其他容器,存在实际差异。

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

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