是否有一个函数可以访问 std::array 中具有值的元素的数量?

Is there a function for accessing the amount of elements that have a value in an std::array?

在 C++ 中,假设我有一个 std::array<std::optional<std::int>, 5> array。假设我将前 3 个元素设置为某个值。是否有一个函数在传递 array returns 3 时(即 Returns 具有 分配的 值的元素数量)?或者有没有改进 std::array 以使其支持此功能?感谢您的帮助。

P.S。保证:数组的元素总是连续的。 例如,

std::array<std::optional<std::int>, 5> arr;
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
cout << func(arr) << endl; // Returns 4 in this case

编辑 1. 我已经知道 std::count,但我不知道如何检查元素是否已定义。此外,数组可以是任何类型。

编辑 2. 如果我使用 std::optional 会怎么样?那我该怎么做呢?

I already knew about std::count, but I do not know how to check if an element is defined.

你可以使用 std::count_if(),例如

std::array<std::optional<int>, 5> arr;
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
auto cnt = std::count_if(arr.begin(), arr.end(),
    [](const auto &elem){ return elem.has_value(); }
);
std::cout << cnt << std::endl; // Returns 4 in this case