在C++中,可以使用std::is_null_pointer
来检查空值。std::is_null_pointer
是C++17中引入的一个类型特征,用于检查给定的类型是否为空指针。
例如,如果要检查一个指针是否为空,可以使用以下代码:
#include<iostream>
#include <type_traits>
int main() {
int* ptr = nullptr;
if (std::is_null_pointer<decltype(ptr)>::value) {
std::cout << "The pointer is null."<< std::endl;
} else {
std::cout << "The pointer is not null."<< std::endl;
}
return 0;
}
在这个例子中,std::is_null_pointer<decltype(ptr)>::value
将返回true
,因为ptr
是一个空指针。
如果要检查一个智能指针是否为空,可以使用bool()
运算符或get()
成员函数。例如:
#include<iostream>
#include<memory>
int main() {
std::shared_ptr<int> ptr;
if (!ptr) {
std::cout << "The shared_ptr is null."<< std::endl;
} else {
std::cout << "The shared_ptr is not null."<< std::endl;
}
return 0;
}
在这个例子中,!ptr
将返回true
,因为ptr
是一个空的智能指针。
如果要检查一个STL容器是否为空,可以使用其empty()
成员函数。例如:
#include<iostream>
#include<vector>
int main() {
std::vector<int> vec;
if (vec.empty()) {
std::cout << "The vector is empty."<< std::endl;
} else {
std::cout << "The vector is not empty."<< std::endl;
}
return 0;
}
在这个例子中,vec.empty()
将返回true
,因为vec
是一个空的向量。
领取专属 10元无门槛券
手把手带您无忧上云