在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”。