What is the simplest way to convert array to vector? What is the simplest way to convert array to vector? arrays arrays

What is the simplest way to convert array to vector?


Use the vector constructor that takes two iterators, note that pointers are valid iterators, and use the implicit conversion from arrays to pointers:

int x[3] = {1, 2, 3};std::vector<int> v(x, x + sizeof x / sizeof x[0]);test(v);

or

test(std::vector<int>(x, x + sizeof x / sizeof x[0]));

where sizeof x / sizeof x[0] is obviously 3 in this context; it's the generic way of getting the number of elements in an array. Note that x + sizeof x / sizeof x[0] points one element beyond the last element.


Personally, I quite like the C++2011 approach because it neither requires you to use sizeof() nor to remember adjusting the array bounds if you ever change the array bounds (and you can define the relevant function in C++2003 if you want, too):

#include <iterator>#include <vector>int x[] = { 1, 2, 3, 4, 5 };std::vector<int> v(std::begin(x), std::end(x));

Obviously, with C++2011 you might want to use initializer lists anyway:

std::vector<int> v({ 1, 2, 3, 4, 5 });


Pointers can be used like any other iterators:

int x[3] = {1, 2, 3};std::vector<int> v(x, x + 3);test(v)