Как мне рассчитать вектор [5] [1] N раз - PullRequest
0 голосов
/ 02 февраля 2020

Я изучаю C ++ и работаю над проектом, в котором у меня есть двумерный вектор [5] [1]

vector[0][0] = 1
vector[1][0] = 2
vector[2][0] = 3
vector[3][0] = 4
vector[4][0] = 5

Затем я добавляю счет во второй пример измерения:

vector[0][1] = 17
vector[1][1] = 24
vector[2][1] = 91
vector[3][1] = 2
vector[4][1] = 50

Я хочу наметить первое измерение на второе измерение количество раз

Так что, если бы я наметил вектор [0] [0] 17 раз вектор [1] [0] 24 раза и т.д. c.

Я только начал изучать 3 недели go, и профессор невероятно не отвечает, поэтому я буду признателен за любые отзывы!

1 Ответ

2 голосов
/ 02 февраля 2020

У меня есть двумерный вектор [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;
}
...