Я пытаюсь разбить вектор на «почти равные» части и создать для них субвекторы.
Я задал оригинальный вопрос здесь: Как разбить вектор на n "почти равных" частей , но я нашел действительно хорошее решение, которое я пытаюсь использовать, отсюда: Лучший способ извлечь субвектор из вектора?
Я написал эту функцию для создания целых чисел для начальных и конечных значений (функция округления - это округление до указанных цифр.)
void split( double number, double parts )
{
double loop = number / parts;
for( int i = 0; i < parts; i++ )
{
int start = round( i * loop, 0 );
int end = round( ( i + 1 ) * loop - 1, 0 );
cout << start << " " << end << endl;
}
}
Эта функция до сих пор работает нормально, но моя проблема в том, что когда я пытаюсь запустить это:
vector<some> dest( &source[start], &source[end] );
Затем он создает один элемент LESS, затем требуется. Я имею в виду, например, если я позвоню с
vector<some> dest( &source[0], &source[99] );
тогда в нем будет 99 элементов вместо 100. Почему это происходит?
Как я могу это исправить? Если я использую [end + 1], то он заканчивается на последнем векторе с "индексом вне диапазона".