最后添加好后,实际字符++ (这也是返回真实字符时,不直接返回_finish,而是返回_finish-_start 因为嵌套的作用,此函数在insert函数实现后,可以直接复用insert就可以了 void push_back(const T& x) { /*if (_finish == _endofstoage) { size_t newCapacity = capacity() == 0 ? 4 : capacity() * 2; ...
最后添加好后,实际字符++ (这也是返回真实字符时,不直接返回_finish,而是返回_finish-_start 因为嵌套的作用,此函数在insert函数实现后,可以直接复用insert就可以了 voidpush_back(constT&x) {/*if (_finish == _endofstoage) { size_t newCapacity = capacity() == 0 ? 4 : capacity() * 2; reserve(...
一、vector的底层原理 二、初始化vector的函数 2.1构造函数 2.2拷贝构造 2.3赋值构造 2.4initializer_list构造 2.5迭代器区间构造 三、vector的核心框架接口的模拟实现 3.1vector的迭代器实现 3.2reserve()扩容 3.3尾插尾删(push_back(),pop_back()) 3.4对insert()插入时迭代器失效刨析 3.5对erase()数据删除时迭代...
也就是相当于指向的是capacity。 其主要操作是通过迭代器来实现的。 insert:再pos位置前面插入一个数据 erase:删除pos位置的数据,并返回删除元素的下一个元素位置。 vector里面没有find函数,如果想要使用find,得在algorithm库里面,find(v.begin(),v.end(),x); 如果找到返回位置,否则返回end(); 迭代器失效问题:...
voidvector<T,Alloc>::insert_aux(iteratorposition,constT&x) { // 检测是否需要扩容:如果finish和end_of_storage不在同一个位置,即还有空间 // 则不需要库容 if(finish!=end_of_storage) { construct(finish,*(finish-1)); ++finish; Tx_copy=x; ...
void insert(int i, const T &value):在指定位置插入一个元素。 void replace(int i, const T &value):替换指定位置的元素。 void remove(int i):移除指定位置的元素。 void remove(int i, int count):从指定位置开始移除指定数量的元素。 void removeAll(const T &value):移除容器中所有等于给定值的元素...
insert(v1.end(), v1.begin(), v1.end());//迭代器区间插入 print(v1); v1.insert(v1.end(), { 9,9,9,9,9 });//初始化器插入 print(v1); return 0; } erase erase的作用是删除指定位置的元素或区间。指定的元素或区间都需要用迭代器表示。函数的返回值是删除部分的后一个位置的正向迭代...
//v1.begin()——返回一个指向字符串第一个元素的迭代器v1.insert(v1.begin() + 3, 30); //在第三个位置插入元素 删除指定位置的元素; v1.erase(v1.begin() + 4); //删除第四个位置的元素 vector常用函数接口 at:访问vector中指定下标的元素,支持下标越界检查; ...
voidinsert_aux(iterator position,constT&x); 这个函数比较长,具体思路:在有备用空间情况下,在备用空间起始处构造一个元素,迭代器finish自增一;在无备用空间情况下,重新配置两倍的原内存空间,将原vector的内容拷贝到新vector中,再释放掉原空间。 注:插入函数是将元素插入到对应位置,原先该位置以及后面的元素都向后...