c – std :: vector :: insert保留定义吗?

在std :: vector上调用insert成员函数时,它会在“推回”新项目之前保留吗?我的意思是标准保证与否?

换句话说,我应该这样做:

std::vector<int> a{1,2,3,4,5};
std::vector<int> b{6,7,8,9,10};
a.insert(a.end(),b.begin(),b.end());

或者像这样:

std::vector<int> a{1,10};
a.reserve(a.size()+b.size());
a.insert(a.end(),b.end());

还是其他更好的方法

解决方法

关于函数 [link]的复杂性:

Linear on the number of elements inserted (copy/move construction)
plus the number of elements after position (moving).

Additionally,if InputIterator in the range insert (3) is not at least
of a forward iterator category (i.e.,just an input iterator) the new
capacity cannot be determined beforehand and the insertion incurs in
additional logarithmic complexity in size (reallocations).

因此,有两种情况:

>可以确定新容量,因此您无需拨打预留>新的容量无法确定,因此保留呼叫应该是有用的.

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...