【发布时间】:2017-06-08 21:05:43
【问题描述】:
将一个向量附加到另一个向量(根据Concatenating two std::vectors)的建议是使用:
vector1.insert( vector1.end(), vector2.begin(), vector2.end() );
为什么vector没有类似的方法:
vector1.append(vector2);
我想到的唯一原因是可能不清楚 append 到底是做什么的。
【问题讨论】:
-
为什么你需要另一种方式来做你已经可以做的事情?
-
它不存在没有技术原因。这是一个你想要一个功能齐全(有些人会说臃肿)的界面还是一个简短而简洁(有些人会说不完整)的界面的问题。这是一个偏好问题。
-
可能是因为
append只是insert的一个特例。insert可以做的远不止是把某事放在某事的末尾。 -
因为,基本上,STL 流量在范围而不是容器中。容器是管理范围的便捷方式,但范围是基础。
insert采用一个范围,这比拥有一个采用自己的容器类型的函数要通用得多。如果vector有append(const vector&),那么list::append? Should it take avector` 或list的适当签名是什么?