【发布时间】:2013-02-22 16:15:41
【问题描述】:
我有一个 巨大的 向量,我需要在不同的线程中处理它,所以我没有使用相同的数据创建 N 个不同的向量,而是考虑使用迭代器。我已经设法完成了代码,但在我看来它可以缩短或改进。
Iterator begin = vec.begin();
Iterator end;
Iterator endOfVector = vec.end();
while(end != endOfVector){
end = begin;
advance(end, elementsPerThread);
if (end > endOfVector){
end = endOfVector;
}
iteratorPairs.push_back( std::make_pair(begin, end) );
begin = end;
}
我已经习惯了 C++/Qt 编程,但是说到 std:: 我觉得我还有很多东西要学。 :)
【问题讨论】:
-
这对我来说似乎很好(需要注意的是,当您的线程在向量上工作时,您必须非常小心不要使任何迭代器无效!)。你不喜欢它什么?
-
太冗长了。 :) 类似 `iteatorPairs = split(vec, 8);` 的东西是我一直在寻找的东西。 =p