As for the question as asked: It depends on the implementation. With MSVC 7.1 this:
std:: cout << sizeof(std::vector<int>) << std::endl;
gives me 16 (bytes). (3 pointers: begin, end, and end of capacity, plus an allocator)
However it should be noted that the pointer-to-vector gives it a larger overhead:
It's completely implementation-dependent and you should neither assume nor rely on the details. For what it's worth it's 20-bytes using VC.
std::vector v;
takes up sizeof(v)
space. It might vary by implementation, so run it and find out how much it takes for you.
VS2005:
std::vector<int> *ptrToVec = new std::vector<int>();
std::vector<int> vecOfInt;
sizeof(ptrToVec) = 4
sizeof(vecOfInt) = 20
Thanks!
In Visual Studio Community 2017 (Version 15.2), running this code:
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<float> test;
vector<float>* test2 = &test;
cout << sizeof(test) << "\n";
cout << sizeof(test2) << "\n";
cout << "\n";
system("pause");
}
Running in 32 bit (x86), I get 16 bytes for the vector and 4 bytes for the vector pointer.
Running in 64 bit (x64), I get 32 bytes for the vector and 8 bytes for the vector pointer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With