跳到主要内容

std::span empty() 方法

[[nodiscard]] constexpr bool empty() const noexcept;

检查容器是否没有元素,即 begin() == end()

参数

(无)

返回值

如果容器为空,则为 true,否则为 false

复杂度

常数 - O(1)

为什么是 [[nodiscard]]

[[nodiscard]] 属性是一个属性,它会在函数被调用且其结果被丢弃时引发编译器警告。

将属性仅应用于 empty 方法的原因是,程序员可能会将形容词 empty(表示 - 这个容器是否为空?)与动词 empty(表示 - 请为我清空这个容器。)混淆。

示例

Main.cpp
#include <span>
#include <iostream>
#include <iomanip>

int main()
{
std::span<const char> span{ "ABCDEF" };

while (!span.empty()) {
std::cout << std::quoted(span.data()) << '\n';
span = span.last(span.size() - 1);
}
}
可能输出
"ABCDEF"
"BCDEF"
"CDEF"
"DEF"
"EF"
"F"
""
本文源自此 CppReference 页面。它可能为了改进或编辑偏好而有所改动。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

std::span empty() 方法

[[nodiscard]] constexpr bool empty() const noexcept;

检查容器是否没有元素,即 begin() == end()

参数

(无)

返回值

如果容器为空,则为 true,否则为 false

复杂度

常数 - O(1)

为什么是 [[nodiscard]]

[[nodiscard]] 属性是一个属性,它会在函数被调用且其结果被丢弃时引发编译器警告。

将属性仅应用于 empty 方法的原因是,程序员可能会将形容词 empty(表示 - 这个容器是否为空?)与动词 empty(表示 - 请为我清空这个容器。)混淆。

示例

Main.cpp
#include <span>
#include <iostream>
#include <iomanip>

int main()
{
std::span<const char> span{ "ABCDEF" };

while (!span.empty()) {
std::cout << std::quoted(span.data()) << '\n';
span = span.last(span.size() - 1);
}
}
可能输出
"ABCDEF"
"BCDEF"
"CDEF"
"DEF"
"EF"
"F"
""
本文源自此 CppReference 页面。它可能为了改进或编辑偏好而有所改动。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。