std :: array: size и max_size возвращает одинаковое число, хотя элемент в массиве меньше - PullRequest
1 голос
/ 25 марта 2020

Как видно из приведенного ниже кода, максимальный элемент в массиве равен размеру элемента. Я ожидал, что 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";
}

Результат:

nums contains 3 elements.
max nums contains 3 elements.

Почему size и max_size возвращают одно и то же значение?

1 Ответ

0 голосов
/ 25 марта 2020

Я ожидал, что размер вернет мне только 2 элемента

Массивы не работают таким образом. Размер массива всегда равен его емкости.

Если вы хотите vector с фиксированной емкостью, вам, вероятно, понадобится boost::container::static_vector. Нет такого стандартного контейнера, есть предложение p0843 однако.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...