Я понял, что в самой декларации есть ошибка.Что это?
Вы правы.У вас есть двумерный вектор, и вы позаботились об одном слое, объявив:
vector<vector<int> > ar(l);
Простое исправление будет:
std::vector< std::vector<int> > ar(l, std::vector<int>(l));
Теперь это обеспечит инициализацию двухмерноговекторный массив, заполненный 0
S, размером 2*A - 1
.
См. сейчас: https://www.ideone.com/1wYCba
Краткое примечание : Однако, если выдействительно работают над концентрическим прямоугольным шаблоном , ваш код / логика неверны.Выше код не печатает то, что вы хотите, даже если теперь он соответствует.