Reputation: 12341
I know in C++11 they added the feature to initialize a variable to zero as such
double number = {}; // number = 0
int data{}; // data = 0
Is there a similar way to initialize a std::vector
of a fixed length to all zero's?
Upvotes: 190
Views: 435639
Reputation: 1
For c++: Let's say that the vector has a maximum of 100 int elements. You can initialize it this way:
int vector[100]={0};
Upvotes: -9
Reputation: 12741
With recent versions of c++ you can go with std::fill
.
I noticed someone mentioned it as comment. But should be an answer and encourage to use standard library algorithms which are mentioned by experts, very well tested and proven.
std::vector<int> vecOfInts;
vecOfInts.resize(10);
std::fill(vecOfInts.begin(), vecOfInts.end(), 0);
for (auto const& intVal : vecOfInts)
{
std::cout << intVal << " ";
}
Upvotes: 4
Reputation: 1275
Initializing a vector having struct, class or Union can be done this way
std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Upvotes: 4
Reputation: 51255
You don't need initialization lists for that:
std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
Upvotes: 358