나는 vector<set<char> >
데이터 구조 (트랜잭션 데이터베이스)가 있으며 그 크기를 알고 싶습니다. 크기가 각각 set<char>
과 함께 sizeof()를 사용할 때 크기는 3, 4 또는 5 문자가 포함되어 있지만 크기는 24입니다. 나중에, vector<set<char> >
와 함께 sizeof()를 사용하면 크기가 12 ... 데이터 구조의 크기를 알 수있는 방법이 아닌 것 같습니다. 어떤 도움이 필요합니까? 감사합니다. .sizeof() 벡터
답변
vector::size()
및 set::size()
을 원합니다.
v
를 가정하면 귀하의 벡터이다, 이렇게 :
size_t size = 0;
for (vector<set<char> >::const_iterator cit = v.begin(); cit != v.end(); ++cit) {
size += cit->size();
}
sizeof()
하는 당신에게 객체의 메모리 크기를주고있다 /이 sizeof(char)
(보통 한 바이트)의 배수로에 적용되는 입력합니다.
sizeof(v) + sizeof(T) * v.capacity(); // where T is the element type
그가 이미 벡터를 예약 한 경우 어떻게됩니까? –
@ 존 : 만약 그가 * *? 'reserve()'는'size()'와 아무런 관계가 없습니다. –
존 (John)은 벡터 (내용)가 얼마나 많은 메모리를 차지하는지 알고 싶다면 크기가 아닌 용량을 고려해야한다는 것을 의미한다고 생각합니다. "컨테이너와 그 요소의 메모리 크기"는 당연히 모호하지만, 현재 요소가 차지하고있는 메모리의 양보다는 벡터에 의해 할당 된 메모리의 양과 관련이 있다고 생각됩니다. –
sizeof()
이 컴파일시 계산되기 때문에 얼마나 많은 요소가 말할 수있는 방법이 없다 : 당신은 용기와 요소의 메모리 크기를 알고 싶은 경우에, 당신이 할 수 내부에있다.
벡터 개체의 size()
메서드를 사용하십시오.
sizeof
은 개체 자체의 크기를 반환합니다. 예를 들어 배열에 대한 포인터를 포함하면 벡터의 포인터 크기 (32 비트에서 4 비트)를 계산합니다 .size
vector::size()
멤버 함수를 사용하여 벡터의 항목 수를 찾습니다 . 힌트 - 그들은 무료 저장소에 할당됩니다.
벡터는 실제 저장소에 대한 내부 포인터를 사용하여 구현됩니다. 따라서 sizeof()는 항상 데이터 저장소 자체를 포함하지 않는 동일한 결과를 반환합니다. 대신 vector::size()
방법을 사용해보십시오. 벡터에있는 요소의 수를 반환합니다. 당신이 벡터 다음 <SomeType>
내부 템플릿 매개 변수를 줄 때 STL에서
vector
는, 클래스 템플릿이며, C++ 컴파일러는 타입 SomeType의 클래스에 대한 코드를 생성합니다. 따라서 push_back
을 사용하여 벡터를 채울 때 SomeType
이라는 다른 객체를 삽입하면 컴파일러에서 .size()
을 요청하면 SomeType
개의 객체가 삽입됩니다.
도움이 되길 바랍니다!
글쎄, 그 주위에 헛간 응답이야 ... 누가 그가'push_back'을 사용하고 있다고 말했고, 그게 어떻게 관련이 있습니까? 벡터가 관련 템플릿이라는 사실은 어떤가요? 그러나 적어도 size()는 OP가 찾고자하는 포인트입니다. –
@STingRaySC sizeof는 그/그녀가 원하는 것과 아무 관련이 없다고 OP에게 설명하려고했습니다. 그는 (/ 그녀)가 찾고 있어야하는 .size() 메소드입니다. –
- 1. sizeof 인수에
- 2. 를 sizeof 플로트 (3.0)
- 3. sizeof 연산자 문제
- 4. sizeof (* this) 값이 잘못됨
- 5. x64의 sizeof (int)입니까?
- 6. C# sizeof decimal?
- 7. 바이트 제대로 SIZEOF 사용 []
- 8. 는 sizeof 연산자
- 9. sizeof (char *)는 무엇을합니까?
- 10. sizeof 및 참조 전달
- 11. matlab에 벡터 플로팅 벡터
- 12. 벡터 초기화 벡터
- 13. C를 sizeof 전달 된 배열
- 14. HLEN과는 sizeof (구조체의 IP)는
- 15. sizeof 연산자를 사용하여 회전 비트
- 16. C 동적 메모리 할당과는 sizeof()
- 17. SFINAE + sizeof = expression이 컴파일되는지 감지합니다.
- 18. sizeof 유형에 따른 템플릿 전문
- 19. 벡터
- 20. C++ 벡터 조작 최적화
- 21. 벡터 이터레이터 호환되지 않음
- 22. 배열이있는 목록 (벡터) 정의
- 23. 동적 길이의 벡터 초기화
- 24. MATLAB에서 벡터 배열의 벡터 규범
- 25. 쌍 벡터 C++
- 26. 는 sizeof() 그리고 오늘 난관에 충돌
- 27. sizeof (* this) in header only constructor implementation
- 28. sizeof-Objective C를 사용할 때의 경고
- 29. 는 sizeof()는 구조에 적용 변수
- 30. sizeof 연산자는 C에서 어떤 인수를 취합니까?
sizeof()는 컴파일 타임 연산자 –