std::vector elements initializing

Posted by Chameleon on Stack Overflow See other posts from Stack Overflow or by Chameleon
Published on 2012-06-05T22:33:17Z Indexed on 2012/06/05 22:40 UTC
Read the original article Hit count: 206

Filed under:
|
|
|
std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);

How elements of these 3 vectors initialized?

About int, I test it and I saw that all elements become 0. Is this standard? I believed that primitives remain undefined. I create a vector with 300000000 elements, give non-zero values, delete it and recreate it, to avoid OS memory clear for data safety. Elements of recreated vector were 0 too.

What about iterator? Is there a initial value (0) for default constructor or initial value remains undefined? When I check this, iterators point to 0, but this can be OS

When I create a special object to track constructors, I saw that for first object, vector run the default constructor and for all others it run the copy constructor. Is this standard?

Is there a way to completely avoid initialization of elements? Or I must create my own vector? (Oh my God, I always say NOT ANOTHER VECTOR IMPLEMENTATION) I ask because I use ultra huge sparse matrices with parallel processing, so I cannot use push_back() and of course I don't want useless initialization, when later I will change the value.

© Stack Overflow or respective owner

Related posts about c++

Related posts about vector