有效地复制和附加向量内容
使用向量时,通常需要复制元素并将它们附加到向量的末尾原始向量。如果不使用循环,这可能会很棘手。
迭代解决方案的挑战
像 std::vector::insert() 这样的方法不适合此任务,因为迭代器矢量在插入过程中可能会变得无效。
使用调整大小和Copy_n
更优雅的解决方案涉及两个步骤:
以下是两个示例实现:
// Using resize() and copy_n() auto old_count = xx.size(); xx.resize(2 * old_count); std::copy_n(xx.begin(), old_count, xx.begin() + old_count); // Using reserve() and copy_n() via back_inserter() auto old_count = xx.size(); xx.reserve(2 * old_count); std::copy_n(xx.begin(), old_count, std::back_inserter(xx));
在任何一种情况下,原始向量的大小都会加倍以容纳重复项,并且copy_n() 操作用于传输元素。在调整大小以及将 Reserve() 与 copy_n() 一起使用之前记住原始向量大小非常重要,因为 end() 迭代器在重新分配后指向向量的末尾。
以上是如何在不使用循环的情况下有效地复制和附加矢量内容?的详细内容。更多信息请关注PHP中文网其他相关文章!