Лично мне очень нравится подход C ++ 2011, потому что он не требует, чтобы вы использовали sizeof()
и не помнили настройку границ массива, если вы когда-либо изменяете границы массива (и вы можете определить соответствующую функцию в C ++2003, если хотите, тоже):
#include <iterator>
#include <vector>
int x[] = { 1, 2, 3, 4, 5 };
std::vector<int> v(std::begin(x), std::end(x));
Очевидно, что в C ++ 2011 вы все равно можете использовать списки инициализаторов:
std::vector<int> v({ 1, 2, 3, 4, 5 });