在C++中,std::set
是一个关联容器,它包含一组唯一的元素。默认情况下,std::set
中的元素是自动排序的,而且不允许有重复的元素。
如果你想在遍历std::set
时处理空值,你需要使用一个可以存储空值的容器,例如std::set<std::optional<T>>
,其中T
是你想在std::set
中存储的值类型。std::optional
是一个可以表示“值存在”或“值不存在”的类型。
下面是一个使用std::set<std::optional<int>>
的示例:
#include <iostream>
#include <set>
#include <optional>
int main() {
std::set<std::optional<int>> my_set = {1, 2, std::nullopt, 4};
for (const auto& element : my_set) {
if (element.has_value()) {
std::cout << "Value: " << element.value() << std::endl;
} else {
std::cout << "Empty value" << std::endl;
}
}
return 0;
}
在这个示例中,我们创建了一个名为my_set
的std::set
,其中包含一些整数值和一个空值。然后,我们使用范围for循环遍历my_set
,并使用has_value()
方法检查每个元素是否有值。如果有值,我们打印该值;否则,我们打印“Empty value”。