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?
You don't need initialization lists for that:
std::vector<int> vector1(length, 0); std::vector<double> vector2(length, 0.0); vector(length) should work?ZERO with efficiently without using for loops??????std:fill(vector2.begin(), vector2.end(), 0)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 << " "; } 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); int etc) and PODs, but will bring huge problems for classes with either 1. virtual methods (because vtable pointer will be set to 0) or 2. invariant that some field is not 0 (which is usually enforced by constructors and methods).length already default-initialises all of the new elements. If it were needed to default-initialise all elements later, or to set them all to some other value, std::fill() should be used because it's actually C++ and type-safe.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};
int array[100]; — it's zero-filled.
std::vector<int> vec(42);