【发布时间】:2010-09-17 03:12:50
【问题描述】:
如何连接两个std::vectors?
【问题讨论】:
-
给出的答案实际上并没有串联。他们附加了一份副本。可能有一个用途(从效率的角度来看)创建一个 std::vector 连接方法,但是它需要对节点的管理进行一些复杂的共享,这可能是它没有完成的原因。
-
@FauChristian:不,从效率的角度来看可能没有用处。矢量记忆必须是连续的,所以你所建议的是不可能的。如果您想要“对节点管理进行一些复杂的共享”,并且如果您要以这种方式更改向量类,那么您最终会得到一个双端队列。即使那样,以建议的方式重用内存也非常困难,尽管它会开始变得更加可行。我认为目前尚未实施。主要的是,在这样的管理节点(双端队列)共享中,端节点可能部分为空。
-
只有我一个人想知道为什么在标准库中没有将其实现为
a + b或a.concat(b)?也许默认实现不是最理想的,但每个数组连接都不需要微优化 -
多年的演变,所有主流语言中最先进的运算符重载,使语言复杂度翻倍的模板系统,但答案不是 v = v1 + v2;
-
我的猜测是 STL 不想过度指定语言,以防您希望操作员做一些不同的事情,比如在物理模型中添加力向量。在这种情况下,您可能希望重载
forceVector1 + forceVector2以清晰、简洁的代码进行逐项添加。
标签: c++ vector stl concatenation stdvector