【发布时间】:2013-04-21 03:09:49
【问题描述】:
用 STL 风格而不是 for(;;) 执行以下操作的优雅方法是什么:
鉴于 p={1,2,3} 和 q={7,8,9},我想将其合并为 pq={1,7,2,8,3,9}。一个应用程序正在创建 pq 向量,用于积分偏离位置 (q) 和动量 (p):
for(size_t i=0; i<p.size();++i) {
pq.push_back(p[i]);
pq.push_back(q[i]);
}
它不优雅,它不是 stl。它有效,但这个问题是关于正确学习 stl 风格而不是完成工作,因此它与 https://stackoverflow.com/questions/10746197/how-to-fit-elements-of-two-vectors-alternately-in-c 不同(请在关闭它之前发表评论,以便我重新措辞)
我正在寻找的解决方案应该使用一些 stl 算法和迭代器操作。 boost也不错。
【问题讨论】:
-
我知道stackoverflow.com/questions/3660058/… 但它有所不同,因为这里的模式定义明确。这种情况在物理学中很常见,因此量身定制的解决方案会很好
-
“它有效......”它真的有效吗?当 i 小于 6 但大于 2 时,您的代码将出现段错误...我猜
i < p.size()就是您的意思。 -
@maditya 谢谢,我纠正了错字
标签: optimization boost coding-style iterator stl-algorithm