当前位置: 首页 > wzjs >正文

顺德大良那里做网站好拼多多seo 优化软件

顺德大良那里做网站好,拼多多seo 优化软件,廊坊哪里做网站,企业做网站多少钱C STL 系列入门:vector 动态数组 一、vector 容器核心特性 vector 是 C 标准库提供的动态数组容器,具有以下显著优势: 自动扩容机制:当插入元素超出当前容量时,自动申请新内存并迁移数据随机访问效率:支持…

C++ STL 系列入门:vector 动态数组


一、vector 容器核心特性

vector 是 C++ 标准库提供的动态数组容器,具有以下显著优势:

  • 自动扩容机制:当插入元素超出当前容量时,自动申请新内存并迁移数据
  • 随机访问效率:支持 O(1) 时间复杂度的下标访问
  • 与原生数组兼容:通过 data() 方法可获取指向底层存储的指针
#include <iostream>
#include <vector>
using namespace std;int main() {// 基础操作演示vector<int> v;

二、容器初始化与容量管理
1. 构造方式对比
    // 默认构造:空容器vector<int> v1; // 指定大小构造(元素默认初始化)vector<int> v2(10); // 指定大小+初始值构造vector<int> v3(10, 2); // 10个值为2的元素// 迭代器区间构造(可用于复制其他容器)vector<int> v4(v3.begin(), v3.end());
2. 容量操作函数
    v.resize(10);  // 调整元素数量:若增大则填充默认值cout << "当前元素数:" << v.size() << endl; // 输出10cout << "当前存储容量:" << v.capacity() << endl; // 容量≥size()v.reserve(20); // 显式预留存储空间(避免多次扩容)

扩容机制解析
当未显式预留空间时,vector 扩容策略通常是当前容量的两倍。例如初始容量5,push_back第6个元素时,容器会重新分配10个元素的内存空间。


三、元素访问与修改
1. 下标访问 vs 迭代器访问
    // 下标赋值for(int i=0; i<10; i++) {v[i] = i+1; // 支持[]运算符随机访问}// 迭代器遍历(STL标准方式)for(auto it = v.begin(); it != v.end(); ++it) {cout << *it << " "; // 解引用访问元素}
2. 尾部插入操作
    v.push_back(11); // 尾插新元素cout << "扩容后元素数:" << v.size() << endl; // 输出11cout << "扩容后存储容量:" << v.capacity() << endl; // 可能输出20
3. 边界安全访问
    if(!v.empty()) {cout << "首元素:" << v.front() << endl; // front()cout << "末元素:" << v.back() << endl;   // back()}

四、常见操作时间复杂度分析
操作时间复杂度特性说明
push_back()摊销 O(1)扩容时 O(n)
pop_back()O(1)仅移除不减小容量
insert()O(n)中间插入需移动元素
erase()O(n)删除后需收缩元素
operator[]O(1)无边界检查
at()O(1)带边界检查抛出异常

五、典型应用场景
1. 动态数据存储
vector<int> nums;
int input;
while(cin >> input) {nums.push_back(input);  // 自动扩展存储空间
}
2. 算法中间结果保存
// 寻找数组中消失的数字(LeetCode 448)
vector<int> findDisappearedNumbers(vector<int>& nums) {vector<int> result;// 算法实现...return result;
}
3. 二维矩阵构造
int m = 3, n = 4;
vector<vector<int>> matrix(m, vector<int>(n, 0)); // 创建3×4矩阵

六、易错点与优化建议
  1. 迭代器失效问题
auto it = v.begin();
v.push_back(100); // 可能触发扩容,导致it失效!
// 正确做法:先执行插入操作再获取迭代器
  1. 避免频繁扩容
vector<int> data;
data.reserve(1000); // 预留空间提升性能
for(int i=0; i<1000; i++) {data.push_back(i);
}
  1. 空间释放陷阱
vector<int>(v).swap(v); // 缩小至实际大小

七、延伸知识点
  • shrink_to_fit():请求删除未使用容量(C++11)
  • emplace_back():原地构造元素(避免拷贝)
  • data() 方法:获取底层数据指针用于接口交互

配套练习项目
LeetCode 数组系列题目
CppReference vector文档

http://www.dtcms.com/wzjs/293935.html

相关文章:

  • 网站源码地址怎么看湖南网站制作公司
  • 广州网站设计成功柚米网站排名查询
  • 建设外贸b2c网站东莞网站建设排名
  • 技术社区网站开发独立站搭建要多少钱
  • 凡科网站 怎么开支付白酒最有效的推广方式
  • 秦皇岛 网站百度推广是什么意思
  • 淄博网站建设多少钱秦皇岛seo排名
  • 网页qq直接登陆驻马店网站seo
  • 做哪一类网站容易有排名大数据分析网站
  • 石家庄微网站建设公司哪家好百度友情链接
  • 新网站注册产品推广朋友圈文案
  • 沈阳网站建设沈阳搜索引擎营销的优缺点及案例
  • 织梦网站怎么做伪静态页面seo手机搜索快速排名
  • wordpress 视频站模板百度网站链接
  • 做威客上什么网站比较好苏州seo关键词优化方法
  • 宋朝网站应该怎么做网络推广怎么学
  • 中学院新校区建设专题网站西安官网seo
  • 佛山模板建站代理新东方雅思培训机构官网
  • 杭州网站建设 网络服务百度竞价排名怎么靠前
  • 怎么建设网站商城如何制作网页最简单的方法
  • 英文网站案例属于seo网站优化
  • 优美女人女性网站模版临沂seo顾问
  • 合肥网站建设博客虎门今日头条新闻
  • 武昌网站建设公司企业网络营销案例分析
  • 怎么查看网站空间大小厦门seo起梦网络科技
  • 免费邯郸网站建设精准客户软件
  • 网站制作测试范围怎么制作公司网页
  • wordpress文件储存seo推广需要多少钱
  • 网站单页在线制作国家最新新闻
  • 营销型网站建设案例杭州seo外包服务