У меня есть двумерный вектор [5] [1]
Я предполагаю, что ваша декларация int vector[5][1]
(но вы должны уточнить в своем вопросе).
Это означает, что действительный индекс для первого измерения составляет от 0
до 4
включительно. А для второго измерения единственным допустимым индексом является 0
.
Вы go вне пределов, когда вы выполняете vector[0][1]
et c, и, таким образом, у вас есть неопределенное поведение. Если вы хотите sh сохранить два элемента во втором измерении, вам нужно иметь int vector[5][2]
.
Возвращаясь к вашему вопросу. Предполагая, что вы исправили декларацию.
Я хочу сделать первое измерение вторым измерением число раз
Подумайте, как бы вы сделали это для строки
cout первое измерение
нормально, поэтому
std::cout << vector[row_idx][0];
... второе измерение количество раз
Итак, мы повторяем вышеизложенное vector[row_idx][1]
раз. Easy peasy:
for (int repeat = 0; repeat < vector[row_idx][1]; ++repeat)
{
std::cout << vector[row_idx][0];
}
А теперь сделайте это для каждого ряда:
std::size_t num_rows = 5;
for (std::size_t row_idx = 0; row_idx < num_rows; ++row_idx)
{
for (int repeat = 0; repeat < vector[row_idx][1]; ++repeat)
{
std::cout << vector[row_idx][0];
}
std::cout << endl;
}