Проблема в основном в том, как вы заполняете свои векторы:
for(int j = 0; j < 4; j++)
{
for(int i = 0; i < 5; i++)
{
temp.push_back(i);
}
A.push_back(temp);
B.push_back(temp);
// now temp yet contains all the values entered, so you produce:
// 0, 1, 2, 3, 4 in first loop run,
// 0, 1, 2, 3, 4 0, 1, 2, 3, 4 in second,
// ...
// most simple fix:
temp.clear();
}
Более эффективно, так как вы все равно хотите иметь одни и те же данные:
for(int i = 0; i < 5; i++)
{
temp.push_back(i);
}
for(int i = 0; i < 4; i++)
{
A.push_back(temp);
B.push_back(temp);
}