Initialisation of static vector

In C++03, the easiest way was to use a factory function:

std::vector<int> MakeVector()
{
    std::vector v;
    v.push_back(4);
    v.push_back(17);
    v.push_back(20);
    return v;
}

std::vector Foo::MyVector = MakeVector(); // can be const if you like

“Return value optimisation” should mean that the array is filled in place, and not copied, if that is a concern. Alternatively, you could initialise from an array:

int a[] = {4,17,20};
std::vector Foo::MyVector(a, a + (sizeof a / sizeof a[0]));

If you don’t mind using a non-standard library, you can use Boost.Assignment:

#include <boost/assign/list_of.hpp>

std::vector Foo::MyVector = boost::list_of(4,17,20);

In C++11 or later, you can use brace-initialisation:

std::vector Foo::MyVector = {4,17,20};

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)