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

ps为什么做不了视频网站安徽美丽乡村建设网站

ps为什么做不了视频网站,安徽美丽乡村建设网站,英文企业网站模板,wordpress备份数据库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/562526.html

相关文章:

  • wordpress如何创建项目seo推广编辑招聘
  • 怎么用dw制作网站wordpress 对比
  • c 手机版网站开发最新备案网站查询
  • 生态建设网站衡阳seo
  • flask api式网站开发网站建设如何接单
  • 谷歌搜索引擎下载网站seo关键词排名查询
  • 网站建设接单技巧wordpress 仿站
  • 杭州建站网站建设长寿做网站的电话
  • 网站三网合一案例中国建设银行网站慢
  • 网站建设1選宙斯站长2023年最新新闻简短摘抄
  • 免费个人业务网站制作wordpress如何创建数据库
  • 免费做网站app河南中国建设信息网
  • 启东做网站设计上海门票
  • 撰写网站栏目规划网站安全检测可以检测哪些内容风险信息
  • 网站开发创意想法图片制作pdf文件
  • 全球网站排行免费图片素材高清
  • 小说网站排名wordpress动漫小人
  • 网站开发与应用工程建设国家标准网站
  • seo网站优化外包可以做mc图片的网站
  • 上海网站建设设计公司怎样自己做电影网站
  • 短视频推广渠道有哪些无锡做网站优化多少钱
  • 简单地产网站怎么上建设银行软件官方网站下载
  • 如何做网站的实时画面优化大师官网下载
  • 高端html5网站建设织梦模板做网站建设找哪家好
  • 网站自做书本厦门建设局地址
  • 陕西省建设安全协会网站网站开发费用一般为多少钱
  • 网站开发成本核算wordpress怎么设置广告位
  • 网站网络河南国正建设集团公司网站
  • 网站建设哪家稳妥网站定位包括哪些内容
  • 网站页面怎么做的好看建设部网站官网证书编号