有多种方法可以实现您的目标。
标准::向量::插入
可以通过在指定位置的元素之前插入新元素来扩展向量,从而通过插入的元素数量有效地增加容器大小。您可以遵循以下方法之一。第二个版本使用 C++11,它可以被认为是一个更通用的答案,因为 b 也可以是一个数组。
a.insert(a.end(), b.begin(), b.end());
a.insert(std::end(a), std::begin(b), std::end(b));
有时在使用中最好在使用 std::vector::insert 之前使用保留函数。std::vector::reserve函数将容器的容量增加到大于或等于 new_cap 的值。如果 new_cap 大于当前容量(),则分配新存储,否则该方法不执行任何操作。
a.reserve(a.size() + distance(b.begin(), b.end()));
不需要使用保留功能,但可能是可取的。如果您重复插入一个您知道最终大小并且该大小很大的向量,那么最好使用保留。否则,最好让 STL 根据需要增长您的向量。
标准::复制
std::copy 是您可以考虑实现目标的第二个选项。此函数将范围 (first,last) 中的元素复制到从 result 开始的范围中。
std::copy (b.begin(), b.end(), std::back_inserter(a));
然而使用 std::copy 比使用 std::vector::insert() 慢,因为 std::copy() 不能预先预留足够的空间(它无法访问向量本身,仅适用于具有的迭代器),而作为成员函数的 std::vector::insert() 可以。由于 std::copy 确实比使用 std::vector::insert 慢。大多数人在不知道这种情况的情况下过度使用 std::copy 。
boost::push_back
您可以考虑的第三个选项是使用 boost 的push_back函数。
boost::push_back(a, b);