вектор (вектор <double>) только делает четные индексы - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь создать динамическую матрицу c со строками "max_step" и столбцами "градус". Но индексы векторных элементов не 0,1,2,3 .... max_step.

Я всегда получаю 0,2,4, ... max_step.

Если я хочу (логический) доступ к строке 3, я получу (конечно) ошибку (свободный () недопустимый указатель) или подобное.

vector<double> qd_algorithm(const std::function<vector<double>()>& poly, const unsigned int max_steps, const unsigned int degree)
{
   vector<vector<double>> e(max_steps, vector<double>(degree+1));

   for (unsigned int i=0;i<max_steps;i++)
   {
       e[i][0]=0;
       e[i][degree+1]=0;
   }
   //stop point debugging
   return poly(); //just for trying

}

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

В C ++ и большинстве языков мы начинаем считать с 0. Поэтому, если у вас есть элемент X в векторе, вы можете получить доступ к X - 1 в максимуме.

Например: 0, 1, 2, 3, 4 Это 5 элементов

Здесь:

   e[i][degree+1]=0;

Вы go слишком далеко. Если вы хотите, чтобы последний элемент во второй части [], получил следующий доступ:

   e[i][degree]=0;
0 голосов
/ 12 апреля 2020
e[i][degree+1]=0

Вы пытаетесь назначить элемент за концом вектора. degree - последний действительный индекс для e[i].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...