作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个问题,我想使用 ImageMagick 的 convert.exe 合并大量图像,但在 Windows 下我有 8192 字节长的命令行限制。
我对此的解决方案是将任务拆分为较小的子任务,运行它们,然后执行将它们组合在一起的最终任务。
我的想法是编写一个函数,它接受一个图像 vector 和一个整数,并将 vector 拆分为 n 个子 vector ,所有子 vector 都具有“几乎相等”的部分。
例如,如果我想将 11 人分成 3 组,那就是 4-4-3。
你能告诉我如何在 C++ 中做到这一点吗?我的意思是,写一个函数
split_vec( const vector<image> &images, int split )
哪个 split ?
另外,你能告诉我如果我不需要创建新 vector ,只需遍历子部分,最有效的方法是什么吗?像 std::substr
函数和 std::string
?
注意:我已经在项目中使用了 Boost,所以如果 Boost 中有一些不错的工具,那么它对我来说是完美的。
最佳答案
要获得每个部分大小的基数,只需将总和除以部分数:11/3 = 3。显然,某些部分需要大于该值才能获得正确的总和,但是这只是余数:11 % 3 = 2。所以现在您知道其中 2 个部分的尺寸为 3+1,剩下的部分将是 3。
关于c++ - 如何将 vector 拆分为 n 个 "almost equal"部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861089/
我是一名优秀的程序员,十分优秀!