W Cpp nawet nie wiesz ile pamięci zajmuje tablica... o ile nie jest na sztywno zdefiniowana.
W C++, nie ma jednoznacznej odpowiedzi na to, ile pamięci zużywa dana struktura danych, ponieważ zależy to od implementacji. Ogólnie jednak można powiedzieć, że mapy, unordered_mapy i zbiory zużywają więcej pamięci niż wektory i tablice, ponieważ zawierają dodatkowe informacje, takie jak klucze map i zbiorów lub hasze unordered_map. W przypadku wektorów i tablic pamięć jest zarezerwowana tylko dla elementów.
Tak do sprawdzenia Możesz użyć operatora sizeof, aby określić, ile pamięci zajmuje konkretny obiekt danej struktury danych. Na przykład:
#include <map>
#include <unordered_map>
#include <set>
#include <vector>
#include <iostream>
int main() {
std::map<int, int> m;
std::unordered_map<int, int> um;
std::set<int> s;
std::vector<int> v;
int arr[100];
std::cout << "Size of map: " << sizeof(m) << std::endl;
std::cout << "Size of unordered_map: " << sizeof(um) << std::endl;
std::cout << "Size of set: " << sizeof(s) << std::endl;
std::cout << "Size of vector: " << sizeof(v) << std::endl;
std::cout << "Size of array: " << sizeof(arr) << std::endl;
return 0;
}
Wynik będzie zależał od implementacji i konfiguracji systemu, ale powinien pokazać różnicę w zużyciu pamięci między różnymi typami danych.