어떤 용도로 사용해야 std::get_temporary_buffer
합니까? Standard는 다음과 같이 말합니다.
최대 n 개의 인접한 T 개체를 저장하기에 충분한 저장소에 대한 포인터를 가져옵니다.
버퍼가 스택에 할당 될 것이라고 생각했지만 사실이 아닙니다. C ++ 표준에 따르면이 버퍼는 실제로 일시적인 것이 아닙니다. 이 함수는 ::operator new
객체를 구성하지 않는 전역 함수에 비해 어떤 이점이 있습니다. 다음 진술이 동등하다는 것이 맞습니까?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
이 함수는 구문 설탕에만 존재합니까? 왜 temporary
그 이름에 있습니까?
1996 년 7 월 1 일 Dr. Dobb의 저널에서 알고리즘 구현을위한 한 가지 사용 사례가 제안되었습니다 .
버퍼를 할당 할 수 없거나 요청 된 것보다 작 으면 알고리즘이 여전히 올바르게 작동하며 속도가 느려질뿐입니다.
std::get_temporary_buffer
로 C ++ 17에서는 더 이상 사용되지 않습니다.