C++에서 STL vector는 동적 배열이지만 스택과 같은 연산을 수행합니다. 그래서 어느 누구도 데이터가 스택 또는 힙 세그먼트에 저장되는지 여부를 알 수 있습니다.C++ : 벡터 표준 템플릿 라이브러리
답변
힙의 인접 블록에 요소가 저장됩니다. 로컬로 생성하거나 동적으로 할당 할 수 있습니다. 그리고 마침내 간단한 c 스타일 배열조차도 스택으로 사용할 수 있습니다.
벡터에 저장된 내용은 모두 힙의 연속 메모리에 저장됩니다. 스택 작업을 구현하는 데 사용할 수는 있지만 스택으로 작동하도록 설계되지 않았으므로이 경우 실제 스택 구현을 사용하는 것이 더 효과적입니다. *
요소를 추가하거나 제거하면 메모리를 다시 할당 할 수 있으므로 벡터에서 사용하는 메모리를 변경할 수 있습니다.
* 사전에 메모리를 미리 할당 한 경우 스택의 대부분의 구현은 다른 어떤 것보다 대략적으로 효율적입니다.
"
vector<Type> vect;
스택에, 헤더 정보, 즉 벡터를 할당되지만, 자유 공간의 요소 ("힙 ").
vector<Type> *vect = new vector<Type>;
이 모든 것을 할당 무료 스토어.
vector<Type*> vect;
무료 스토어에서 스택에 포인터와 묶음을 할당합니다. 다시 말하지만,이 지점은 사용 방법에 따라 결정됩니다 (예를 들어 요소 0을 자유 저장소로, 요소 1을 스택에 가리킬 수 있습니다). "
귀하의 질문에 대한 답변을 larsmans 님이 7-11-11에 있습니다.
std::vector
자체는 사용되는 메모리 할당 방식을 정의하지 않습니다. Allocator 객체를 통한 메모리 할당을 수행합니다.
기본적으로 vector<T>
은 std::allocator<T>
을 사용하여 할당을 처리합니다. 즉, 메모리를 할당/삭제하려면 operator new
및 operator delete
을 사용합니다.
이들은 모두 변경 될 수 있습니다. 할당 자의 유형은 템플릿 매개 변수로 vector
으로 전달되므로 할당을 다르게하는 할당 자 클래스를 작성하려면 완전히 자유롭게 할 수 있습니다. 할당 자에 대한 요구 사항을 충족한다고 가정하면 기본 인스턴스 대신 할당자를 사용하는 std::vector
의 인스턴스를 만들 수 있습니다.
클래스 별 및/또는 글로벌 단위로 operator new
및 operator delete
대체품을 제공 할 수도 있습니다. 그렇게하면 std::allocator<T>
은 표준 라이브러리에 정의 된 할당/삭제 루틴 대신 할당/삭제 루틴을 사용합니다.
- 1. C++ 표준 라이브러리 가이드
- 2. 표준 벡터의 표준 벡터 (벡터 벡터) C++에서
- 3. C++의 템플릿 벡터
- 4. C++ 템플릿 래퍼 클래스 : 벡터
- 5. 표준 C++ 라이브러리 연결
- 6. C++ 표준 라이브러리 포함
- 7. C++ 표준 라이브러리 버전
- 8. 표준 C++ 라이브러리
- 9. C++ 표준 : : 벡터 :: const_iterator를 문제
- 10. C++ 친구 클래스 표준 : : 벡터
- 11. 액세스 다차원 C++ 표준 : : 벡터
- 12. g ++를 사용하는 표준 템플릿 라이브러리
- 13. C를위한 성숙한 표준 라이브러리
- 14. C++ 문자열 템플릿 라이브러리
- 15. C++ 벡터 템플릿 클래스, 다형성
- 16. C++ 템플릿 벡터 작업 오버로드
- 17. 표준 : : 벡터
- 18. 템플릿 기반 표준 라이브러리 함수 바인딩
- 19. 세그먼트 트리에 대한 표준 템플릿 라이브러리
- 20. Must 표준 라이브러리 파이썬 초보자를위한 표준 라이브러리
- 21. C 표준 라이브러리 코너 사례
- 22. C++ 표준 라이브러리 예외 목록?
- 23. /clr : pure가있는 C 표준 라이브러리
- 24. C++ 프로그램의 표준 라이브러리 컨테이너
- 25. Visual C++ 표준 라이브러리 키워드
- 26. JNI, C++ 및 표준 라이브러리
- 27. 표준 : : 벡터 ... 모든 지옥 나누기
- 28. C++/C# 경로/벡터 드로잉 라이브러리 (2D)
- 29. 표준 : : 벡터 삽입 표준 : : 쌍
- 30. C# 바인딩이있는 Windows 용 벡터 그래픽 라이브러리
당신이 말한 것처럼 역동적 인 배열은 힙에서 가정합니다. – 101010
* 모든 * 메모리는 스택으로 작동 할 수 있습니다. 요소 추가 및 제거의 문제 일뿐입니다. –
"스택과 같은 연산을 수행함"이란 무엇을 의미합니까? 스택에 정의 된 스택 또는 스택 구조를 의미합니다. –