是否有一个函数可以访问 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
在 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