템플릿 쌍에 가치가 있는지 확인하는 방법
Dec 01 2020
템플릿 스 니펫을 사용하여 C ++에서 trie 구조를 코딩하고 있습니다.
pair<char,T>
루트의 두 번째 값 이 설정되지 않았 는지 확인하려는 void empty () 메서드 가 있습니다 (값이 기본 생성자 값과 같거나 자세히 : 값은 다른 쌍 유형을 저장합니다.). 기본 생성자가 int 데이터 유형에 0을 적용한다는 것을 알고 있지만 템플릿 내에서 어떻게 확인할 수 있습니까?
다른 게시물이 이것을 언급했습니다 : return root == new Trie <char, T> () (알 수없는 == 연산자에 대한 듀오 실패)
미리 감사드립니다
답변
1 largest_prime_is_463035818 Dec 01 2020 at 01:04
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);
}