std::array 函数有什么意义?
what is the point of std::array function?
在 C++ array
实现中,提供了一个 empty
方法。然而,正如实施建议的那样:
constexpr bool
empty() const noexcept { return size() == 0; }
只有 returns 如果 array
的大小为 0,那么这有什么意义呢?
std::array
的典型用例是这样的:std::array<type,size> a = {init here maybe};
或 a[index] = value;
之后。
是否有任何用例可以声明零长度数组或从空检查有用的地方获取它?
is there any use case where you would declare a zero length array or get it from somewhere that an empty check would be useful?
如果您使用数组大小的模板。例如
#include <array>
template <std::size_t s>
void function(std::array<int, s> const& array) {
if (!array.empty()) {
// other array operations ...
}
}
int main() {
auto empty_array = std::array<int, 0>{};
function(empty_array);
auto array = std::array<int, 9>{};
function(array);
}
在这种情况下,in function
接受不同大小的数组,因此我们不能 100% 确定它不为空。
编辑:
此外,size
和 empty
成员在我们没有其他方法获取大小时(在我的第一个示例中)在通用代码(例如,适用于任何容器的函数)中很有用从技术上讲,您可以从 s
获得尺寸)。例如
template <class Container>
void function(Container const& array) {
if (!array.empty()) {
// other container operations ...
}
}
在 C++ array
实现中,提供了一个 empty
方法。然而,正如实施建议的那样:
constexpr bool
empty() const noexcept { return size() == 0; }
只有 returns 如果 array
的大小为 0,那么这有什么意义呢?
std::array
的典型用例是这样的:std::array<type,size> a = {init here maybe};
或 a[index] = value;
之后。
是否有任何用例可以声明零长度数组或从空检查有用的地方获取它?
is there any use case where you would declare a zero length array or get it from somewhere that an empty check would be useful?
如果您使用数组大小的模板。例如
#include <array>
template <std::size_t s>
void function(std::array<int, s> const& array) {
if (!array.empty()) {
// other array operations ...
}
}
int main() {
auto empty_array = std::array<int, 0>{};
function(empty_array);
auto array = std::array<int, 9>{};
function(array);
}
在这种情况下,in function
接受不同大小的数组,因此我们不能 100% 确定它不为空。
编辑:
此外,size
和 empty
成员在我们没有其他方法获取大小时(在我的第一个示例中)在通用代码(例如,适用于任何容器的函数)中很有用从技术上讲,您可以从 s
获得尺寸)。例如
template <class Container>
void function(Container const& array) {
if (!array.empty()) {
// other container operations ...
}
}