【发布时间】:2014-04-03 19:18:45
【问题描述】:
我正在尝试在 C++ 中对大量对象进行并行化操作。我以前用 Java 写过并行程序,但我刚刚开始使用 C++。
当前代码在向量上使用迭代器。并行化的最快方法是什么?我现在的想法是……
使用 .size() 函数并在向量中使用 forloop。但是,我担心 .size() 函数的运行时间,是 O(N) 还是 O(1)? forloops也会比使用迭代器慢吗?
以某种方式拆分向量,并为新向量并行创建迭代器?如果是这样,什么是快速运行时拆分向量的好方法?
或者有更快的方法吗?
【问题讨论】:
-
大小是常数时间。就时间复杂度而言,使用 for 循环应该与使用迭代器没有什么不同。但使用迭代器或 for-each 循环优于传统的 for 循环。我不确定你想用分裂做什么。你在问我们如何在 C++ 中分割向量吗?或者它只是线程的编程拆分?向量支持随机访问迭代器。因此,您可以在不同的点设置迭代器并将它们分发给不同的线程进行并行处理。不过要小心任何可能使迭代器无效的事情。
标签: c++ vector parallel-processing