Как динамически вставлять элементы в двумерный вектор?
В общем, заполнение двумерного вектора будет выглядеть как-то так.for (int i = 0; getline(in, line); i++) {
    vector<int> row; //создаем одномерный вектор
    for (int j = 0; j < line.size(); j++) {
        row.push_back(line[j]); //набиваем значениями 
    }
    matrix.push_back(row); запихиваем полученный одномерный вектор в двумерный.
  };
for (int i = 0; getline(in, line); i++) {
    matrix.push_back(vector<int>()); // добавляем новую строку
    for (int j = 0; j < line.size(); j++) {
        matrix[i].push_back(line[j]); // в данную строку добавляем элементы.
    }
};
Хотя по логике у вас должен быть vector<vector<char>> а не vector<vector<int>>.
Если у вас на входе числа, делайте так:int num;
for (int i = 0; getline(in, line); i++) {
    stringstream ss(line);
    matrix.push_back(vector<int>()); // добавляем новую строку
    while(ss >> num) {
        matrix[i].push_back(num); // в данную строку добавляем элементы.
    }
};