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

一份完整的活动策划合肥seo网站多少钱

一份完整的活动策划,合肥seo网站多少钱,为企业设计网站,wordpress主题繁体C std::vector 标准库类型 std::vector 是 C 标准库中动态数组的实现&#xff0c;支持自动扩容、随机访问和高效的元素操作。 ​1. 头文件与基本定义 ​头文件&#xff1a;需包含 <vector>。​命名空间&#xff1a;属于 std 命名空间。​基本声明&#xff1a; #includ…

C++ std::vector 标准库类型 

std::vector 是 C++ 标准库中动态数组的实现,支持自动扩容、随机访问和高效的元素操作。

 

1. 头文件与基本定义
  • 头文件:需包含 <vector>
  • 命名空间:属于 std 命名空间。
  • 基本声明
    #include <vector>
    using namespace std; // 或显式使用 std::vector

2. 初始化与构造

vector 支持多种初始化方式:

vector<int> v1;             // 默认构造:空 vector
vector<int> v2(5, 100);     // 含 5 个元素,每个值为 100
vector<int> v3 = {1, 2, 3}; // 列表初始化(C++11 起)
vector<int> v4(v3);         // 拷贝构造(v4 与 v3 相同)
vector<int> v5(v3.begin(), v3.end()); // 通过迭代器范围构造

3. 常用操作
(1) 元素访问
  • 下标访问

    int a = v3[0];     // 访问第一个元素(不检查越界)
    int b = v3.at(1);  // 访问第二个元素(越界抛出 std::out_of_range)
    int c = v3.front(); // 首元素(等价于 v3[0])
    int d = v3.back();  // 尾元素(等价于 v3[v3.size()-1])
  • 范围检查

    if (!v3.empty()) { // 确保 vector 非空cout << v3[0];
    }
(2) 添加元素
  • 尾部插入

    v1.push_back(30);     // 添加元素 30 到尾部
    v1.emplace_back(40);  // 更高效(C++11,直接在容器内构造对象)
  • 任意位置插入

    auto it = v3.begin() + 2;
    v3.insert(it, 99);  // 在索引 2 处插入 99 → {1, 2, 99, 3, 4, 5}
​(3) 删除元素
  • 尾部删除

    v3.pop_back();       // 删除最后一个元素 → {1, 2, 99, 3, 4}
  • 任意位置删除

    auto it = v3.begin() + 2;
    v3.erase(it);        // 删除索引 2 处的元素 → {1, 2, 3, 4}
    v3.erase(v3.begin(), v3.begin() + 2); // 删除前两个元素 → {3, 4}
  • 清空 vector

    v3.clear();          // 清空所有元素,size 变为 0

4. 容量管理
(1) 容量与大小
int size = v3.size();     // 元素数量
bool isEmpty = v3.empty();// 是否为空
int capacity = v3.capacity(); // 当前分配的存储容量(>= size)
​(2) 调整容量
  • 预分配内存​(避免频繁扩容):

    v3.reserve(100); // 预分配容量为 100,size 不变
  • 调整元素数量

    v3.resize(10);    // 若 size < 10,填充默认值(int 为 0)
    v3.resize(5);     // 若 size > 5,截断后 5 个元素
    v3.resize(8, 99); // 填充 99 到新增位置

5. 迭代器与范围遍历
(1) 迭代器操作
// 正向迭代器
for (auto it = v3.begin(); it != v3.end(); ++it) {cout << *it << " ";
}// 反向迭代器
for (auto rit = v3.rbegin(); rit != v3.rend(); ++rit) {cout << *rit << " ";
}// C++11 范围 for 循环
for (int num : v3) {cout << num << " ";
}
(2) 迭代器失效问题
  • 插入/删除元素可能导致迭代器失效
    auto it = v3.begin() + 1;
    v3.push_back(10); // 可能导致迭代器失效(若触发扩容)
    // 此时使用 it 是未定义行为!

 


6. 性能与优化
(1) 动态扩容机制
  • 扩容策略:当 size 超过 capacity 时,vector 会分配新内存(通常容量翻倍),并将旧元素拷贝到新内存。
  • 时间复杂度
    • 尾部插入(push_back):均摊 O(1)。
    • 中间插入/删除:O(n)。
(2) 高效操作建议
  • 批量插入

    vector<int> newData = {10, 20, 30};
    v3.insert(v3.end(), newData.begin(), newData.end());
  • 移动语义(C++11)​

    vector<string> v6;
    string str = "hello";
    v6.push_back(std::move(str)); // 移动而非拷贝,str 变为空

7. 算法与 vector 结合
#include <algorithm>
vector<int> nums = {3, 1, 4, 1, 5};
sort(nums.begin(), nums.end());       // 排序:1, 1, 3, 4, 5
auto it = find(nums.begin(), nums.end(), 4); // 查找元素 4 的位置
reverse(nums.begin(), nums.end());    // 反转:5, 4, 3, 1, 1
 ​8. 与数组的对比
特性std::vector原生数组 (int[])
内存管理自动扩容和释放手动管理
大小动态调整固定大小
访问效率相同随机访问复杂度(O(1))相同
安全性越界检查(at() 方法)无检查,越界导致未定义行为

9. 注意事项
  • 越界访问operator[] 不检查越界,at() 会抛出 std::out_of_range
  • 迭代器失效:插入/删除操作可能导致迭代器、指针或引用失效。
  • vector<bool> 特化:避免使用 vector<bool>,其行为类似压缩位数组,与标准容器不一致。
  • 避免频繁插入/删除中间元素:优先使用 std::list 或 std::deque
  • 预分配内存:已知元素数量时,使用 reserve 减少扩容次数。
  • 元素类型要求:需支持拷贝或移动构造函数(如自定义类)。
​10. 综合示例
#include <iostream>
#include <vector>
#include <algorithm> // 用于 sort
using namespace std;int main() {vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6};// 排序sort(nums.begin(), nums.end()); // 1, 1, 2, 3, 4, 5, 6, 9// 去重auto last = unique(nums.begin(), nums.end());nums.erase(last, nums.end()); // 1, 2, 3, 4, 5, 6, 9// 遍历输出for (int num : nums) {cout << num << " ";}return 0;
}
11. 总结
核心优势说明
动态大小无需预先指定容量,自动调整
随机访问支持 O(1) 时间访问任意元素
内存安全自动管理内存,避免泄漏和越界
与算法库无缝协作支持标准库算法(如 sortfind


文章转载自:

http://JFyQob8L.Ldnrf.cn
http://7wqJf2dO.Ldnrf.cn
http://JZGVQotH.Ldnrf.cn
http://Csh4Uf4Q.Ldnrf.cn
http://1Txr082S.Ldnrf.cn
http://IKcSEI9n.Ldnrf.cn
http://JLPR20ND.Ldnrf.cn
http://5A0BB2Cs.Ldnrf.cn
http://owAZHW4R.Ldnrf.cn
http://Idu1435Q.Ldnrf.cn
http://xiHAtQIj.Ldnrf.cn
http://Tc2wakXu.Ldnrf.cn
http://kxCsGzA1.Ldnrf.cn
http://G0YLUBOM.Ldnrf.cn
http://4UCmLs9e.Ldnrf.cn
http://3WdixcZi.Ldnrf.cn
http://A2ceQNtX.Ldnrf.cn
http://amGnEmFc.Ldnrf.cn
http://HpO6ibQp.Ldnrf.cn
http://bXTC4PrY.Ldnrf.cn
http://EUM5ubk9.Ldnrf.cn
http://fb4w6wf2.Ldnrf.cn
http://3GyX2D0A.Ldnrf.cn
http://PtRtdapS.Ldnrf.cn
http://6vFxXX7c.Ldnrf.cn
http://VjSJLvud.Ldnrf.cn
http://NxgdnqM2.Ldnrf.cn
http://qtiru7qL.Ldnrf.cn
http://LPXTgKkp.Ldnrf.cn
http://Vx2VYAAQ.Ldnrf.cn
http://www.dtcms.com/wzjs/701552.html

相关文章:

  • 叮当网站做app网龙网络公司简介
  • 个人做网站赚钱建设门户网站
  • 装修设计图网站排名商城建站
  • 服务器网站崩溃自己的网站什么做优化
  • 做游戏下载网站赚钱php能区别电脑网站和手机网站吗怎么嵌入到phpcms
  • 外贸网站如何做推广怎么样wordpress 小刀娱乐
  • wp网站建设模板小程序推广网站
  • 红安县城乡建设局网站网络游戏名字
  • 公司广告片拍摄公司杭州seo泽成
  • 怎么自己做微网站吗linux下搭建wordpress
  • 哪些企业网站做的比较好最版网站建设案例
  • 怎么用新浪云做淘宝客网站网站建设平台简介
  • 北京网站优化实战广西网站建设费用
  • 阿里云搭建网站教程网页美工设计心得体会
  • seo网站沙盒期做美食直播哪个网站最好
  • 网站开发电脑内存要多少电子商务 网站前台功能
  • 做网站公司什么条件做物流网站
  • 什么网站上面能接点小活做自己app的制作费用多少
  • 网站开发属于软件开发行业吗青岛网站建设哪家更好
  • 苏州公司做网站织梦做的网站别人提交给我留的言我去哪里看
  • 商城网站开发需要多少钱企业网站的建立标准
  • 诚信网站体系建设工作总结网站加v怎么做
  • 哈尔滨公司网站建设多少钱广告设计公司实习周记
  • 大型商城网站建设方案一站式婚庆公司
  • 档案网站的建设方案域名注册成功后怎么使用网站
  • 企业网站空间在哪里深圳家具设计公司排名
  • 如何检测做的网站的兼容性长春火车站停车场24小时收费标准
  • 网站设计服务费英文成功的电商网站
  • 怎么把自己做的网站放上网络那个网站做图片好看
  • 如何免费弄一个网站wordpress的数据库