Как разбить вектор на n «почти равных» частей

У меня проблема, заключающаяся в том, что я хотел бы объединить большое количество изображений с помощью ImageMagick convert.exe, но под Windows у меня есть ограничение на длину командной строки 8192 байта.

Мое решение - разделить задачу на более мелкие подзадачи, запустить их и выполнить последнюю задачу, которая объединит их вместе.

Моя идея состоит в том, чтобы написать функцию, которая берет вектор изображений и целое число и разбивает вектор на n субвекторов, каждый из которых имеет «почти равные» части.

Так, например, если я хочу разделить 11 на 3 группы, это будет 4-4-3.

Можете ли вы сказать мне, как я могу сделать это на C ++? Я имею в виду, написать функцию

split_vec( const vector<image> &images, int split )

, которая выполняет расщепление?

Кроме того, не могли бы вы сказать мне, какой наиболее эффективный способ сделать , если мне не нужно создавать новые векторы, просто перебрать части ? Как и функция std :: substr с std :: string ?

Примечание: я уже использую Boost в проекте, поэтому, если в Boost есть какой-нибудь хороший инструмент для этого, тогда он идеально подходит для меня.

16
задан hyperknot 28 July 2011 в 14:57
поделиться