1、std::copy()
复制 [first, last)
所定义的范围中的元素到始于 d_first
的另一范围。
std::copy(start, end, container.begin());
copy只负责复制,不负责申请空间,所以复制前必须有足够的空间。如果container的大小小于输入序列的长度N的话,这段代码会导致崩溃(crash)。所以此时引入了back_inserter,如下
std::copy(src.begin(), src.end(), std::back_inserter(dest));
标准库提供的back_inserter模板函数很方便,因为它为container返回一个back_insert_iterator迭代器,这样,复制的元素都被追加到container的末尾了。(就算container为空也没事)。
在本例中,另外一种可选方法是应用back_insert_iterator 作为目的参数。该迭代器扩展目的容器为每一次复制扩展元素,确保了容器有足够的大小来容纳每个元素。