テンプレートペアに価値があるかどうかを確認する方法
Dec 01 2020
テンプレートスニペットを使用してC ++でトライ構造体をコーディングしています。
pair<char,T>
ルートの2番目の値が設定されていないかどうかを確認したいメソッドvoidempty()があります(値はデフォルトのコンストラクター値と等しいか、詳細:値は他のペアタイプを格納します)。デフォルトのコンストラクターがデータ型intに0を適用することは知っていますが、テンプレート内でこれを確認するにはどうすればよいですか?
別の投稿はこれに言及しました:return root == new Trie <char、T>()(unknown == operatorへのデュオの失敗)
前もって感謝します
回答
1 largest_prime_is_463035818 Dec 01 2020 at 01:04
Astd::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>:の2番目のメンバーの場合
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);
}