Для считывания в двухмерный вектор необходимо прочитать одномерный вектор для каждой строки, а затем добавить этот одномерный вектор в двухмерный вектор. Вы можете сделать что-то вроде этого:
for (int i = 0; i < n; ++i)
{
std::vector<int> row;
for(int j = 0; j < n; ++j)
{
cin >> x;
row.push_back(x);
}
A.push_back(row);
}
Вы можете даже выделить место для всего 2D-вектора, а затем читать прямо в правильные позиции, например:
auto A = std::vector<std::vector<int>>(n, std::vector<int>(n, 0));
for (int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
cin >> A[i][j];
Вы можете упростим это еще больше, поскольку комментарий предлагает
auto A = std::vector<std::vector<int>>(n, std::vector<int>(n, 0));
for (auto &row : A)
for(auto &element : row)
cin >> element;
Ваш код для суммирования строк кажется разумным.