#include <bits/stdc++.h>
int main() {
std::ios::sync_with_stdio(0); std::cin.tie(0);
std::vector<bool> bv(1000000);
bool ba[1000000];
std::cout << sizeof(bv) << '\n' << sizeof(ba);
return 0;
}
출력)
40
1000000
vector<bool>이 다른 벡터랑 다르게 비트 필드를 가져서 메모리 효율성 높인 컨테이너라는건 알겠는데
요소가 백만개있는데 어떻게 크기가 40바이트밖에 안됨?
이거 설명해줄사람?
std::vector과 이 벡터의 내부에서 사용되는 reference 객체(또는 이와 유사한 프록시 객체)는 서로 다른 메모리 공간에 존재합니다. 이는 std::vector의 특수한 구현 때문에 발생하는 현상입니다. reference 프록시 객체는 벡터의 특정 비트를 조작하기 위한 인터페이스를 제공하지만, 실제로 std::vector 객체의 메모리 공간 내에 위치하지 않습니다. reference 객체는 일시적으로 생성되어 특정 비트에 대한 작업을 수행한 후 파괴될 수 있으며, 이 객체의 생명 주기와 메모리 위치는 std::vector의 데이터 저장 방식과 별개입니다.
sizeof() 포인터가 가리키는 메모리 크기는 못 구함. vect or는 힙 쓰니까 sizeof로 안 나오는거
더 비효율적인데 뭔솔