说明:
std::copy(source_begin_iter, source_end_iter, des_iter):
copy函数会讲原容器指定位置的元素,赋值到目标容器的指定位置,覆盖处理。
note:目标容器必须能够容纳要复制的元素,如果容量不够,代码crash!!
std::back_inserter(vector/queue):
note:
1)back_inserter只能获得有迭代器类型的容器的back_inseter_iter类型的迭代器!!!
2)back_inserter能够对其处理的容器动态扩充!!!!
因此适用于,没有事先声明容器大小,有需要动态扩充的场景,比如std::copy(),以及集合运算std::XXX()
// std::copy结合std::back_inserter()向未指定容器大小的容器中copy元素
std::vector<std::string> a(100, "Hello, World");
// vector b的容器大小未指定,如果在std::copy()的目标容器的迭代器位置直接用b.begin()/b.end()
// copy会crash
std::vector<std::string> b;
std::copy(a.begin(), a.end(), std::back_inserter(b));