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

删负面的网站桂林网站优化价格

删负面的网站,桂林网站优化价格,货运 东莞网站建设,兰州门户网站建设【C STL】vector容器详解:从入门到精通 摘要:本文深入讲解C STL中vector容器的使用方法,涵盖常用函数、代码示例及注意事项,助你快速掌握动态数组的核心操作! 一、vector概述 vector是C标准模板库(STL&am…

【C++ STL】vector容器详解:从入门到精通

摘要:本文深入讲解C++ STL中vector容器的使用方法,涵盖常用函数、代码示例及注意事项,助你快速掌握动态数组的核心操作!


一、vector概述

vector是C++标准模板库(STL)中序列容器的代表,本质上是一个动态数组。它能够根据需要自动调整大小,支持快速随机访问,在尾部插入/删除元素效率极高,是C++中最常用的容器之一。

核心特性

  • 动态扩容:内存空间自动增长(默认翻倍策略)
  • 连续存储:元素内存连续,支持指针偏移访问
  • 随机访问:O(1)时间复杂度访问任意元素
  • 尾部操作高效:push_back/pop_back的时间复杂度为O(1)

二、vector常用函数详解

1. 构造函数

vector<int> v1;             // 空vector
vector<int> v2(5, 100);     // 5个100
vector<int> v3(v2.begin(), v2.end());  // 迭代器构造
vector<int> v4(v3);         // 拷贝构造// C++11初始化列表
vector<int> v5 = {1,2,3,4,5};  

2. 元素访问

函数说明示例
[]随机访问(不检查越界)v[2] = 5;
at()带边界检查的访问v.at(3) = 10;
front()首元素int a = v.front();
back()尾元素int b = v.back();
data()返回指向数组的指针(C++11)int* p = v.data();

3. 容量操作

v.empty();      // 判断是否为空
v.size();       // 当前元素个数
v.capacity();   // 当前分配的存储容量
v.reserve(100); // 预分配至少100个元素的空间
v.resize(10);   // 调整元素个数为10(默认填充0)
v.shrink_to_fit(); // 请求移除未使用的容量(C++11)

4. 修改操作

尾部操作

v.push_back(10);     // 尾部插入元素
v.emplace_back(20);  // 更高效的尾部构造(C++11)
v.pop_back();        // 删除最后一个元素

插入删除

v.insert(v.begin()+2, 100);  // 在第三个位置插入100
v.emplace(v.begin(), 50);    // 构造插入(C++11)
v.erase(v.begin()+1);        // 删除第二个元素
v.erase(v.begin(), v.begin()+3); // 删除前三个元素
v.clear();                   // 清空所有元素

交换内容

vector<int> v6 = {6,7,8};
v.swap(v6);  // 交换两个vector的内容

三、vector遍历方式

1. 下标遍历

for(size_t i = 0; i < v.size(); ++i) {cout << v[i] << " ";
}

2. 迭代器遍历

for(auto it = v.begin(); it != v.end(); ++it) {cout << *it << " ";
}

3. 范围for循环(C++11)

for(int num : v) {cout << num << " ";
}

四、实战示例代码

#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec;// 添加元素for(int i=0; i<5; ++i){vec.push_back(i*10);} // vec: 0 10 20 30 40// 中间插入vec.insert(vec.begin()+2, 25); // 0 10 25 20 30 40// 删除元素vec.pop_back();        // 移除40vec.erase(vec.begin()); // 移除0 → 10 25 20 30// 修改元素vec[1] = 250;          // 10 250 20 30// 容量操作cout << "Capacity: " << vec.capacity() << endl; // 8vec.shrink_to_fit();cout << "New capacity: " << vec.capacity() << endl; //4// 遍历输出for(int num : vec) {cout << num << " ";}return 0;
}

输出结果

Capacity: 8
New capacity: 4
10 250 20 30 

五、注意事项

  1. 迭代器失效

    • 插入元素可能导致所有迭代器失效(扩容时)
    • 删除元素会使被删元素之后的迭代器失效
  2. 性能优化

    • 使用reserve()预分配空间避免频繁扩容
    • 优先选择emplace_back()而非push_back()
  3. 特殊类型

    • vector<bool>是特化版本,每个元素占1bit,行为可能与其他类型不同
  4. 内存管理

    • clear()只清空元素,不释放内存
    • 结合shrink_to_fit()可真正释放多余内存(C++11)

六、总结

vector凭借其高效的随机访问和动态扩展特性,成为处理动态数组需求的首选容器。合理使用reserve预分配、选择正确的插入方法,可以显著提升程序性能。掌握vector的各种操作,将为你的C++编程打下坚实基础!

http://www.15wanjia.com/news/178838.html

相关文章:

  • 旅游网站开发系统的er图中国建设银行官方网站 认证
  • 微餐饮建站费用高大上的企业网站欣赏
  • 做淘宝客怎么建网站网页制作工具 知乎
  • 设计网站推荐语重庆教育建设有限公司网站
  • 网站后台上次图片wordpress 实用主题
  • 克州seo整站排名网络技术课程
  • 郑州网站开发douyanetseo标题优化导师咨询
  • 推荐优秀的企业网站设计怎样设计一个公司网站
  • 网站宣传夸大处罚wordpress 侧分类
  • 大学网站建设策划书沉默是金吉他谱
  • 互联网网站如何做流量统计霸气的网络公司名字
  • 重庆哪里有做淘宝网站推广的小程序模板素材
  • 资讯cms网站有那些汉中门户网工程招标
  • 可以发描文本的网站熊猫办公ppt模板下载免费
  • 淘宝网站建设属于什么类目wordpress排除首页显示
  • 常州网站建设推广公司wordpress更新慢
  • 网站建设中销售人员会问客户的问题互联网营销案例分析
  • 怎么能自己创建网站厦门网站seo
  • 旅游商业网站策划书做网站公司(信科网络)
  • 会网站开发维护的ps什么岗位珠海电商网站建设
  • 页面设计网站素材wordpress如何添加模板
  • o2o网站建设公司排名wordpress 4.5.6
  • 宁波有没有开发网站的公司新浪微博指数查询
  • 视频教学网站怎么做竞价推广代运营公司
  • 临湘市建设局网站如何在手机上做广告
  • 公司做网站怎么做账网站本地环境搭建软件
  • 新网网站空间到期停了 咋续费中国兰州网pc主站
  • 本溪市做网站公司网站搜索排名高怎么做
  • 展馆展示设计公司招聘广告企业网站建设 优化
  • 宁夏建设投资集团公司网站娱乐网站后缀是什么