如何将向量拆分为 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 中有一些不错的工具,那么它对我来说是完美的。

原文由 hyperknot 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 328
1 个回答

要获得每个部分大小的基数,只需将总数除以部分数:11/3 = 3。显然,某些部分需要大于该值才能获得正确的总数,但这只是余数:11 % 3 = 2。所以现在您知道其中 2 个部分的尺寸为 3+1,剩下的部分将是 3。

原文由 Mark Ransom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题