Warm tip: This article is reproduced from serverfault.com, please click

c++-如何检查模板对是否有价值

(c++ - How to check if a template pair has value)

发布于 2020-11-30 17:59:44

我正在用模板代码片段在C ++中编码trie结构:

pair<char,T>

我有一个方法void empty(),我要在其中检查是否未设置根的第二个值(值等于默认构造函数值或详细说明:值将存储其他对类型。)。我知道默认构造函数将对数据类型int应用0,但是如何在模板中检查呢?

另一篇文章提到了这一点:return root == new Trie <char,T>()(对未知==运算符失败的二重奏)

提前致谢

Questioner
Danzon2504
Viewed
11
largest_prime_is_463035818 2020-12-01 02:18:06

一个std::pair小号成员不能为“未设置”。

你可以用来std::optional为可选值建模。


“ ...值等于默认构造函数...”

当然,你可以检查当前值是否等于初始值:

std::pair<int,int> x;
if (x.first == 0) {
    std::cout << "value of x.first is that of a default constructed std::pair<int,int>";
}

或的第二个成员std::pair<int,T>

if (x.second == T{} ) {
    std::cout << "second has same value as a default constructed T";
}

完整的例子:

#include <iostream>
#include <utility>

template <typename T>
bool check_if_default_second(const std::pair<int,T>& p) {
    return p.second == T{};
}


int main() {
    std::pair<int,int> p;
    std::cout << check_if_default_second(p);
}