96SEO 2026-02-20 02:02 7
语言中数组是一组相同类型元素的有序集合。

与字符串类似它的大小在编译时就已经确定不可更改。
同样与string类似C为了更加方便就引入了一个支持可动态大小数组的序列容器vecotr。
其特点如下
vector是可变大小的序列容器采用连续存储空间存储元素可通过下标高效访问。
与数组不同vector大小可动态改变由容器自动处理。
vector本质上用动态分配数组存储元素插入新元素时可能重新分配空间即分配新数组并移动全部元素此操作时间代价高但不是每次插入都重新分配。
vector会分配额外空间适应增长不同库策略不同但重新分配通常是对数增长间隔使末尾插入元素能在常数时间完成。
与deque、list和forward_list相比vector访问元素及末尾添加和删除元素更高效非末尾的删除和插入操作效率低且统一的迭代器和引用更好。
v2;并且注意每次使用vector都需要包含头文件#includevector。
并且vector是一个模版类所以在使用时需要显示实例化。
接下来我们将介绍一些vector的常见接口因为很多接口的作用都与string的接口非常类似所以很多就不在详细说明大家具体也可以参考vector的使用。
同样的vector中也存在迭代器iterator因为定义在vector类中所以其需要通过域作用限定符访问——vector类型::iterator
下面将介绍的begin()end()rbeign()rend()的使用访问方法与string中的几乎一摸一样我们直接上实例演示
{1,2,3,4,5,6,7,8};vectorint::iterator
逆序遍历;vectorint::reverse_iterator
}当然vector也支持const_iterator用法也类似这里就不在赘述。
同样的vector也支持多种构造函数拷贝构造以及赋值运算符重载。
s(abcd);//3.利用迭代器区间初始化vectorint
}其中需要注意的是可变参数列表初始化这是在C11之后支持的新语法具体讲解我们之后再谈。
函数名称功能size返回数组的有效长度capacity返回数组的容量大小clear清空数组empty检查是否为空数组是则返回ture否则返回falsereserve请求改变数组的容量resize重新设置有效元素的数量超过原来有效长度则用c字符填充
在vector类中我们同样可以通过size()容器的有效长度capacity()返回容器的容量大小。
}在初始化时vecotr中的size与capacity一般相同。
这时我们也可以通过以下程序探究一下其扩容机制
}在VS环境下vector一般是以1.5倍扩容。
但是在Linux环境下一般就以2倍扩容。
至于clear()与empty()两个函数用法就十分简单这里就不在赘述了。
接下来我们来使用一下vector中的resize()与reserve()。
其实他们的用法与特点也是与string类中的相同我们直接上手即可
当nsz时reserve并不会发生任何改变resize会删除有效字符到指定大小。
当szncapcity时reserve并不会发生任何改变resize会补充有效字符(默认为0)到指定大小。
当ncapacity时reserve会发生扩容resize会补充有效字符(默认为0)到指定大小。
}一旦运行就会发生如上错误这是为什么呢因为reserve只是改变了容量capacity并没有改变size而operator[]访问时元素时是禁止访问下标size以后的元素的一旦访问就会直接报错。
函数名称功能operator[]返回指定位置的元素越界则报错at返回指定位置的元素越界则抛异常back返回字符串最后一个元素front返回字符串第一个元素
这四个函数的用法也与string中的函数用法相同我们就直接上手示例
函数名称功能push_back在数组后追加元素insert在指定位置追加元素assign使用指定数组替换原数组pop_back删除数组最后一个元素erase删除数组指定部分区间swap交换两个数组
我们首先先介绍最简单的四个函数push_back()pop_back()assign()swap()。
endl;//尾插v.push_back(7);//尾删cout
}然后我们来介绍insert()与·earse()的用法这两个函数的用法就与string中的有所不同。
首先是insert()函数
myvector.begin();//1.向指定位置插入一个元素it
endl;//2.向指定位置插入n个元素myvector.insert(it,
myvector.begin();myvector.insert(it
anothervector.end());//4.向指定位置插入一段迭代器区间int
};myvector.insert(myvector.begin(),
myvector.push_back(i);vectorint::iterator
myvector.erase(myvector.begin()
myvector.erase(it);//2.删除一段迭代器区间it
myvector.erase(myvector.begin(),
}虽然看起来vector的insert()和erase()与string的没有什么区别但是仔细观察就可以发现我们每次使用完迭代器之后都会更新这是为什么呢
主要还是因为我们每次插入数组都可能发生扩容而扩容分为就地扩容与异地扩容。
如果发生的异地扩容这时的迭代器就不在指向原来的空间而就指向一块释放的内存我们一旦继续访问就会报错这种现象我们称为迭代器失效。
为了避免出现这种情况所以我们在使用完迭代器之后需要更新。
作为专业的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