i'm coding a trie structure in C++ with a template snippet:
pair<char,T>
I have a method void empty() in which I want to check, whether the root's second value is not set (value is equal to default constructor value or in detail: values would store other pair types.). I know that the default constructor would apply 0 for the data type int, but how can i check this inside the template ?
Another post mentioned this: return root == new Trie<char,T>() (failed duo to unknown == operator)
Thanks in advance
A std::pair
s member cannot be "not set".
You can use std::optional
to model an optional value.
"...value is equal to default constructor..."
Of course you can check if the current value equals the initial one:
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>";
}
Or for the second member of a std::pair<int,T>
:
if (x.second == T{} ) {
std::cout << "second has same value as a default constructed T";
}
Complete example:
#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);
}