С++ Выделение места под вектор

Нужно в конструторе инициализировать вектор элементов. При такой реализации выводит segfault. Как мне выделить место под вектор в конструторе класса?

private:
    int c;
    std::vector<int> b;
public:
    a() : c(0) { b[3] = 5; }
    int getC() { return c; }
    void setC(int d) { c = d; } 
};

int  main() {
    a var;
    var.setC(1);
    printf("111 - %d\n", var.getC());
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Ну сначала дайте вектору нужное количество элементов...

Например:

a() : c(0), b(4) { b[3] = 5; }

Здесь вектор инициализируется четырьмя нулевыми элементами, так что b[3] = 5; приобретает смысл...

Для двумерного вектора

vector<vector<int>> b;

инициализация выглядит так:

b(4,vector<int>(4));

т.е. 4 элемента, каждый из которых - вектор из 4 элементов...

→ Ссылка