C++ 数组:虽然数组中的元素较少,但size和max_size返回相同的数字

C++ 数组:虽然数组中的元素较少,但size和max_size返回相同的数字,c++,arrays,c++11,C++,Arrays,C++11,从下面的代码中我们可以看到,数组中的最大元素与大小相同。我希望size只返回2个元素 #include <array> #include <iostream> enum class x { a = 1, b = 2, c = 3 }; int main() { std::array<x, 3> nums {x::a, x::b}; std::cout << "nums contains " <&

从下面的代码中我们可以看到,数组中的最大元素与大小相同。我希望
size
只返回2个元素

#include <array>
#include <iostream>

enum class x
{
    a = 1,
    b = 2,
    c = 3
};

int main()
{ 
    std::array<x, 3> nums {x::a, x::b};

    std::cout << "nums contains " << nums.size() << " elements.\n";
    std::cout << "max nums contains " << nums.max_size() << " elements.\n";
}
为什么大小和最大大小返回相同的值

我期待的大小将返回我的2个元素只

数组不是这样工作的。数组的大小始终等于其容量

如果您想要固定容量的
vector
,您可能需要
boost::container::static\u vector
。没有这样的标准容器,但是有一个建议

我期待的大小将返回我的2个元素只

数组不是这样工作的。数组的大小始终等于其容量


如果您想要固定容量的
vector
,您可能需要
boost::container::static\u vector
。没有这样的标准容器,但是有一个建议。

第三个元素是
0
。一个数组有固定数量的元素。如果你要一个包含3个元素的数组,你会得到一个包含3个元素的数组。写一个答案并不容易,因为你的误解到底在哪里还不是100%清楚。如果你真的问一个问题,也许会更容易些;)
size
返回3,因为固定大小数组有3个元素
max_size
返回3,因为固定大小数组具有固定大小的3个元素。第三个元素是
0
。数组具有固定数量的元素。如果你要一个包含3个元素的数组,你会得到一个包含3个元素的数组。写一个答案并不容易,因为你的误解到底在哪里还不是100%清楚。如果你真的问一个问题,也许会更容易些;)
size
返回3,因为固定大小数组有3个元素
max\u size
返回3,因为固定大小数组具有固定大小的3个元素。
max\u size
容量
不同。向量的最大大小源自平台对连续分配的限制。但是对于
std::array
以及
static_vector
(包括boost和当前针对std提出的)
max_size
等于
capacity
max_size
不同于
capacity
。向量的最大大小源自平台对连续分配的限制。但是对于
std::array
以及
static\u vector
(boost和当前建议的std)
max\u size
等于
容量
nums contains 3 elements.
max nums contains 3 elements.