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

6.C嘎嘎STL vector

一,C嘎嘎STL

在实际项目开发中,无论是 C++ 还是 C 语言,都不建议自行手写数据结构实现 —— 现成的成熟库 / 标准容器往往更可靠。

而单片机开发中对数据结构的使用本就偏少,核心原因在于:但凡涉及稍复杂的动态数据结构,几乎都离不开malloc这类动态内存分配操作;但单片机场景下,动态内存申请的风险极高(易引发内存碎片、堆溢出、稳定性问题等),因此行业内的通用原则是 “能规避就规避”。

在实际项目开发中,优先选用 C++ 标准模板库(STL)的容器而非手写数据结构,既高效又能规避手写实现的漏洞。以最常用的动态数组容器vector为例,其封装了动态内存管理、自动扩容等核心能力,是项目中替代手写顺序表的最优选择。

二,STL vector

#include <iostream> // 引入vector头文件 #include <vector> // 引入算法库(用于查找) #include <algorithm> using namespace std; int main() { // 1. 初始化vector(动态数组),存储整型数据 vector<int> dataVec; // 无需预先指定容量,默认空容器 // 2. 向容器尾部添加元素(push_back,自动扩容) dataVec.push_back(10); dataVec.push_back(20); dataVec.push_back(30); dataVec.push_back(40); cout << "初始容器内容:"; for (int num : dataVec) { // 范围for遍历(C++11+) cout << num << " "; } cout << endl; // 输出:10 20 30 40 // 3. 在指定位置插入元素(insert) // 插入到索引1的位置(第二个元素前),值为15 dataVec.insert(dataVec.begin() + 1, 15); cout << "插入15后:"; for (int i = 0; i < dataVec.size(); ++i) { // 传统下标遍历 cout << dataVec[i] << " "; } cout << endl; // 输出:10 15 20 30 40 // 4. 删除指定位置元素(erase) // 删除索引1的元素(值为15) dataVec.erase(dataVec.begin() + 1); cout << "删除索引1元素后:"; for (auto it = dataVec.begin(); it != dataVec.end(); ++it) { // 迭代器遍历 cout << *it << " "; } cout << endl; // 输出:10 20 30 40 // 5. 查找元素(使用STL算法find) int target = 30; auto findIt = find(dataVec.begin(), dataVec.end(), target); if (findIt != dataVec.end()) { // 计算找到的元素索引 int index = findIt - dataVec.begin(); cout << "找到元素" << target << ",索引:" << index << endl; // 输出:索引2 } else { cout << "未找到元素" << target << endl; } // 6. 修改指定索引元素(直接通过下标赋值) dataVec[2] = 300; cout << "修改索引2元素后:"; for (int num : dataVec) { cout << num << " "; } cout << endl; // 输出:10 20 300 40 // 7. 容器常用属性与操作 cout << "当前元素个数:" << dataVec.size() << endl; // 输出:4 cout << "当前容器容量:" << dataVec.capacity() << endl; // 容量随扩容自动调整 cout << "容器是否为空:" << (dataVec.empty() ? "是" : "否") << endl; // 输出:否 // 8. 清空容器 dataVec.clear(); cout << "清空后容器是否为空:" << (dataVec.empty() ? "是" : "否") << endl; // 输出:是 return 0; }

三,QTQVector

QT 是基于 C++ 的开发框架,完全兼容标准 C++ 的 STL 库,因此std::vector可以在 QT 项目中直接使用,和普通 C++ 项目中使用vector的方式完全一致。

同时,QT 也提供了自己的动态数组容器QVector,它是 QT 容器体系的一部分,和std::vector功能类似,但针对 QT 的生态做了适配(比如信号槽、跨平台、隐式共享等)。

#include <QCoreApplication> #include <iostream> // 引入STL的vector头文件 #include <vector> int main(int argc, char* argv[]) { QCoreApplication a(argc, argv); // 1. 定义并使用std::vector std::vector<int> vec; vec.push_back(10); vec.push_back(20); vec.push_back(30); // 2. 遍历vector qDebug() << "std::vector:"; // QT的调试输出函数 for (int num : vec) { qDebug() << num; } // 3. 结合QT的其他功能使用 std::vector<QString> strVec; // 存储QT的QString类型 strVec.push_back("QT"); strVec.push_back("STL"); strVec.push_back("Vector"); for (const QString& str : strVec) { qDebug() << "string:" << str; } return a.exec(); }

运行结果:

http://www.jsqmd.com/news/366812/

相关文章:

  • 3D打印机,走出极客圈
  • 节日送礼酒水推荐:选酒不踩坑,毛铺紫荞酒首选更体面 - 资讯焦点
  • 树莓派兼容的文字处理软件推荐
  • 3.空间复杂度
  • 2026年靠谱的橡塑隔热棉/橡塑隔音材料哪家质量好厂家实力参考 - 品牌宣传支持者
  • 【课程设计/毕业设计】基于springboot的学生档案管理系统用于各类学校档案管理提升校园信息化水平【附源码、数据库、万字文档】
  • 百元内口感柔和的白酒首选!毛铺绿荞领衔,自饮宴请都合适 - 资讯焦点
  • 2026年评价高的大提花工艺培训/梭织鞋面培训实操强化课程推荐 - 品牌宣传支持者
  • 2026年比较好的定制工厂零角度铰链/德国高端零角度铰链高评价直销厂家采购指南推荐(高评价) - 品牌宣传支持者
  • 计算机Java毕设实战-基于springboot的软件测试管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2026年2月金属检测机厂家推荐,资质齐全、售后完善的供应商精选 - 品牌鉴赏师
  • 2026年NAD+产品排行榜,十款抗衰nad+品牌推荐,哪个产品效果、功效、口碑、性价比最好? - 资讯焦点
  • 2026欧洲自由行全流程指南:新手从行程规划到聪明订票的一站式攻略 - 资讯焦点
  • 2026年评价高的彩色橡塑保温板/铝箔橡塑保温管制造厂家实力参考哪家专业 - 品牌宣传支持者
  • Java毕设选题推荐:基于SpringBoot的学生信息管理系统基于springboot的学生档案管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026年比较好的电梯/德阳电梯销售值得信赖的厂家推荐 - 品牌宣传支持者
  • Java毕设选题推荐:基于springboot的智慧医疗平台管理系统基于SpringBoot的智慧医疗综合服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026年靠谱的实木酒店家具/佛山板式酒店家具哪家质量好厂家实力参考 - 品牌宣传支持者
  • 【毕业设计】基于springboot的体检预约小程序(源码+文档+远程调试,全bao定制等)
  • 医疗系统中ASP.NET大文件上传方案如何实现断点续传和加密功能?
  • 同程国际机票平台服务评价与横向对比分析 - 资讯焦点
  • SEAL全同态加密CKKS方案入门详解
  • 【Kotlin】一文轻松入门 Flow
  • 汽车制造行业如何选择支持ASP.NET大文件断点续传的网页上传控件?
  • 2026主流旅行平台国际机票服务多维测评:同程、携程、飞猪、去哪儿横向对比 - 资讯焦点
  • 2026年双洲12天出行全攻略:行程规划与机票预订详解 - 资讯焦点
  • 2026敏肌祛痘实测,哪款祛痘产品最有效果?优选兼顾祛痘、淡印、修护三重功效 - 资讯焦点
  • 汽车制造企业如何用TinyMCE实现CAD图纸Word文档转存?
  • 从芯到端全链路自主,天硕工业级固态硬盘打造高密度环境存储可靠方案 - 资讯焦点
  • 2026欧洲长途旅行全流程规划:10天行程安排与省心机票预订指南 - 资讯焦点