96SEO 2026-02-19 22:11 3
vector是一个可变大小数组的容器与数组一样vector也是一块连续的空间可以像数组一样对元素进行高效的遍历访问但是普通数组的大小是不变的vector可以改变自身大小。

vector是采用动态分配数组来存储数据即插入新元素时要改变存储空间大小往往要分配一个新的数组然后把原来数组的元素转移到新的空间里。
vector的尾插尾删效率高中间插入和删除效率较低。
endl;获取数组第一个元素的位置像指针一样遍历整个数组直到最后一个元素结束。
auto是自动推导类型。
const_iterator;//————————iterator
nullptr;这里在声明时先给成员变量缺省值为空指针声明时给缺省值是给初始化列表的后续写的时候就比较方便。
begin函数返回空间的起始位置end函数返回空间的最后一个有效元素的下一位。
last)//判断条件{push_back(*first);//复用尾插函数first;//尾插一次后加1}
}这个函数看起来有些奇怪为啥还要套一层模板呢使用这里就不说了其实这个构造函数的作用是只要传进来的是迭代器就可以初始化该迭代器的内容前提是该迭代器是指向连续物理空间的指针。
比如用vector定义了一个v1v1已经是构造好的有具体的元素再定义一个v2我想让v2的内容跟v1是一样的就可以使用这个函数传的迭代器指向的是v1的头和尾它就会构造出和v1一样的内容。
前面的使用方法有代码。
不仅可以vector传vector还可以list传vector只要是迭代器即可。
}该构造函数是初始化为n大小的空间每个元素是x。
可以直接复用resize函数下面会介绍。
这里写了两个构造函数唯一的区别是size_t
类型的那个构造函数构造时不会调用该函数会调用前面的构造函数有参构造1这与函数模板的匹配调用原则有关。
假如传进来的n不是size_t
类型那么它就要发生隐式类型转换但是编译器想隐式类型转换感觉麻烦就使用有模板的那个函数。
为了防止出现以上情况同时是模拟实现要尽可能像标准库里面的vector所以多重载了一个函数它的参数n是int
T[v.capacity()];//开一样大的空间memcpy(_start,
}与string的拷贝构造类似开一块新空间拷贝数据后指向这个新空间这样防止两个指针指向同一块空间。
写法1还要注意memcpy的深浅拷贝问题与元素的类型有关这个在后面会具体介绍现在假设统一使用的元素类型先是
{reserve(v.capacity());//复用扩容函数for
v)//范围for循环直接放入数据即可{push_back(e);//复用尾插函数}
}先开与参数v一样大的空间然后使用范围for直接放入数据只要参数v里面有元素都可以把元素一个一个的尾插到要构造的空间里面同时也不影响v最终完成拷贝构造。
T[v.capacity()];//临时空间memcpy(tmp,
v._finish);std::swap(_endofstorage,
如果空间里有元素才清理让3个指针置空没有元素本来就是空指针不能清理。
如果存储的元素超出原来的空间大小要扩容扩容要开辟一块新空间然后拷贝数据到新空间里再让指针重新指向这块新空间。
T[n];//新空间if(_start){//memcpy(tmp,
开空间拷贝数据后旧空间被释放指向新空间_finish等于_start
加上元素个数注意如果没有old前面先记录元素个数的值加上的是调用size函数返回的元素个数那么就会出现迭代器失效问题。
因为_start已经指向新的空间而_finish还是指向旧空间的某个位置那个不同空间相减就出问题了。
所以这里提前用变量old记录好元素的个数_finsih等于_startold就不会出现以上情况。
等内置类型没关系如果是自定义类型比如string这里就会出现浅拷贝的问题。
该函数可通过参数n修改元素个数超出容量也会扩容。
主要分为以下3点
n;//修改_finish指向即可}else//nsize(){size_t
capacity())//n大于容量要扩容{reserve(n);//复用扩容函数}while
(len--)//插入len个x只要n大于size()都要插入{*_finish
capacity();reserve(newcapacity);}*_finish
指向同_endofstorage说明空间内数据已满要扩容。
然后插入在_finish指向的位置插入数据_finish往后移。
首先断言pos的位置是否合理然后凡是插入数据都要检查是否需要扩容。
接着挪动数据在pos位置插入新的元素。
capacity();reserve(newcapacity);pos
遍历访问有两种实现方式一种是迭代器前面已经写过了另一种是方括号重载运算符即我们常见的下标。
_finish;}//构造1vector(){}//构造2vector(size_t
InputIteratorvector(InputIterator
last){push_back(*first);first;}}//拷贝构造//写法1//vector(const
v.capacity();//}//写法2vector(const
v){push_back(e);}}//赋值重载//写法1//vectorT
v._finish);std::swap(_endofstorage,
T[n];//新空间if(_start){//memcpy(tmp,
capacity();reserve(newcapacity);}*_finish
0);--_finish;}//pos位置插入iterator
capacity();reserve(newcapacity);pos
v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);auto
v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(5);auto
v;v.push_back(1);v.push_back(22);v.push_back(43);v.push_back(64);v.push_back(85);for
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback