[STL] construct() 및 destroy()
이 중 두 개의 전역 함수인 construct()와destroy()는 대상의 구조와 분석을 책임지고 STL 표준 규범에 속한다.
구성 객체는 위치 지정 new를 직접 사용합니다.
template <class T1, class T2>
inline void construct(T1* p, const T2& value) {
new (p) T1(value); // new
}
분석 객체는 여러 버전으로 나뉘어져 있습니다.
버전 1:
template <class T>
inline void destroy(T* pointer) {
pointer->~T(); //
}
버전 2:
template <class ForwardIterator>
inline void destroy(ForwardIterator first, ForwardIterator last) {
__destroy(first, last, value_type(first));
}
호출:
template <class ForwardIterator, class T>
inline void __destroy(ForwardIterator first, ForwardIterator last, T*) {
typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor; //
__destroy_aux(first, last, trivial_destructor());
}
그 다음에 대상의 필요에 따라 각각 호출한다.
template <class ForwardIterator>
inline void
__destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) { // non-trivial destructor
for ( ; first < last; ++first)
destroy(&*first); //
}
template <class ForwardIterator>
inline void __destroy_aux(ForwardIterator, ForwardIterator, __true_type) {} // trivial destructor
두 가지 버전 2의 리셋 버전도 있습니다.
// ,
inline void destroy(char*, char*) {}
inline void destroy(wchar_t*, wchar_t*) {}
대상이 문자라면 아무것도 하지 않는 것이 분명하다.
다음 세 가지 글로벌 함수:
이 세 함수는 모두 서로 다른 재부팅 버전을 가지고 원소가 POD(전통 C struct 유형)인지 여부에 따라 해당하는 동작을 수행하거나 직접memmove(), STL 범용 함수를 호출하거나 각 원소에 구조 함수를 각각 호출한다.P77의 그림은 이미 매우 잘 요약되었다.자세한 내용은 유형 추출기 type traits 를 참조하십시오.
참조:
P51, P70.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.