news 2026/6/10 13:28:33

C++顺序容器概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++顺序容器概述

文章目录

    • 概要
    • array、vector和string
    • 总结

概要

在C++中,容器是C++标准库中的重要组成部分,众所周知,C++标准库中分为:容器、迭代器、分配器、算法以及仿函数等等。一个容器就是一些特定类型对象的集合。而顺序容器为程序员提供了控制元素存储和访问顺序的能力。下面我们就来介绍一些常见的容器,那么系好安全带,我们要发车了!

array、vector和string

array叫作数组,与我们在C++中常用的数组一样,其特点是具有固定大小,支持快速随机访问,与其他容器不同的是array在使用时需要指定其大小,如array<int,10>,其原因就在于array是固定数组大小,不能像vector、和string等容器一样进行动态扩容,以下是一些array常见的初始化操作

#include<iostream>#include<array>usingnamespacestd;intmain(){// 方式1:全量初始化(元素个数=数组大小)array<int,5>arr1={1,2,3,4,5};// 推荐写法,清晰array<int,5>arr1_alt{1,2,3,4,5};// 等价写法(省略=)// 方式2:部分初始化(未赋值元素自动补0)array<int,5>arr2={10,20};// 结果:[10, 20, 0, 0, 0]array<double,4>arr3{3.14,2.718};// 结果:[3.14, 2.718, 0.0, 0.0]return0;}

vector容器如上述所说,是一种可变大小数组,同时支持快速随机访问,但是在尾部之外的位置插入或删除的元素可能很慢。其常见的初始化方式如下:

#include<vector>#include<array>// 范围初始化依赖usingnamespacestd;intmain(){// 1. 列表初始化(最常用)vector<int>vec1={1,2,3,4,5};// 标准列表初始化vector<string>vec2{"C++","Java","Python"};// 省略=的统一初始化vector<double>vec3{};// 空列表初始化// 2. 指定大小+默认值初始化vector<int>vec4(5);// 大小5,元素默认值0vector<int>vec5(5,99);// 大小5,所有元素为99vector<string>vec6(3,"hi");// 大小3,所有元素为"hi"// 3. 拷贝初始化vector<int>src_vec={10,20,30};vector<int>copy_vec1=src_vec;// 赋值拷贝vector<int>copy_vec2(src_vec);// 构造函数拷贝// 4. 范围初始化array<int,5>arr={1,2,3,4,5};vector<int>vec7(arr.begin(),arr.end());// 从array初始化vector<int>vec8(vec7.begin()+1,vec7.end()-1);// 截取vector部分范围intraw_arr[]={100,200,300};vector<int>vec9(raw_arr,raw_arr+3);// 从原生数组初始化// 5. 移动初始化(C++11+)vector<int>vec10=std::move(vector<int>{1,2,3});// 移动临时vectorvector<int>src_move={4,5,6};vector<int>vec11=std::move(src_move);// 移动已有vector// 6. 空初始化(默认构造)vector<int>vec12;// 空vector,大小/容量均为0return0;}

细心的读者发现,上面的代码中有一个string,别急,接下来就开始对容器string进行解释,string是一种与vector相似的容器,但是其专门用于保存字符串,其随机访问快。在尾部插入或删除速度快。另外string不止可以作为容器,还可以作为一种规定的数据类型,上面vector的内容中就利用了这一点。
对于string的常见初始化如下:

#include<string>usingnamespacestd;intmain(){// 1. 空初始化(默认构造)string str1;// 空字符串,长度0// 2. 常量字符串初始化(最常用)string str2="Hello C++";// 标准赋值初始化stringstr3("Hello World");// 构造函数初始化string str4{"Hello Python"};// C++11+统一初始化// 3. 拷贝初始化string src_str="test";string str5=src_str;// 赋值拷贝(深拷贝)stringstr6(src_str);// 构造函数拷贝// 4. 指定长度+字符初始化stringstr7(5,'a');// 长度5,所有字符为'a' → "aaaaa"stringstr8(3,'8');// 长度3,所有字符为'8' → "888"// 5. 范围初始化(从string/字符数组截取部分)stringstr9(str2.begin(),str2.begin()+5);// 截取str2前5个字符 → "Hello"charchar_arr[]="123456";stringstr10(char_arr,char_arr+4);// 截取字符数组前4个 → "1234"// 6. 移动初始化(C++11+,高效)string str11=std::move(string("temp"));// 移动临时stringstring src_move="move test";string str12=std::move(src_move);// 移动已有string(原string变空)// 7. 数字/其他类型转string(C++11+)string str13=to_string(123);// 整数转string → "123"string str14=to_string(3.1415);// 浮点数转string → "3.141500"return0;}

又有细心的读者会发现上面的代码有一个char类型用于初始化string类型,实际上string中有这样一种规定:char可以被转化为string类型,反过来则不行。(除非是提取出string中的单个字符才可以完成转换。)

总结

`C++中的顺序容器为程序员提供了控制元素存储和访问顺序的能力,这一节我们讲了关于array、vector和string三个基本的顺序容器的初始化、类型以及特点,下期我会对另外的三个顺序容器进行讲解,感兴趣的读者可以关注一下,如果我的内容对你有帮助和启发,请点赞、评论、收藏。你们的支持就是我更新最大的动力,那么我们下期再见!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:20:57

PaddlePaddle镜像如何实现模型灰度监控告警?异常检测规则设置

PaddlePaddle镜像如何实现模型灰度监控告警&#xff1f;异常检测规则设置 在AI服务日益深入生产核心的今天&#xff0c;一个看似微小的模型性能波动&#xff0c;可能就会引发线上业务指标的连锁下滑。尤其在中文自然语言处理、OCR识别或推荐系统这类高敏感场景中&#xff0c;一…

作者头像 李华
网站建设 2026/6/10 11:50:01

PaddlePaddle镜像如何实现模型冷启动性能压测?基准测试方案

PaddlePaddle镜像如何实现模型冷启动性能压测&#xff1f;基准测试方案 在AI服务日益走向工业级部署的今天&#xff0c;一个常被忽视却影响用户体验的关键指标正逐渐浮出水面——模型冷启动延迟。你有没有遇到过这样的场景&#xff1a;某个视觉识别接口平时响应只要50毫秒&…

作者头像 李华
网站建设 2026/6/10 11:25:25

PaddlePaddle自定义数据集训练全流程:GPU加速实操演示

PaddlePaddle自定义数据集训练全流程&#xff1a;GPU加速实操演示 在深度学习项目中&#xff0c;模型训练往往不是最难的部分——真正让人头疼的是如何把从零散图片或文本数据开始的整个流程跑通。尤其是当企业需要基于自有数据定制AI能力时&#xff0c;数据格式五花八门、环境…

作者头像 李华
网站建设 2026/6/10 3:31:09

小红书下载神器XHS-Downloader:一键搞定无水印素材批量下载

小红书下载神器XHS-Downloader&#xff1a;一键搞定无水印素材批量下载 【免费下载链接】XHS-Downloader 免费&#xff1b;轻量&#xff1b;开源&#xff0c;基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloade…

作者头像 李华
网站建设 2026/6/9 22:28:37

E7Helper如何通过五大智能模块彻底改变第七史诗的游戏体验?

第七史诗作为一款深度养成类RPG&#xff0c;其复杂的日常任务和资源管理往往让玩家感到疲惫。E7Helper作为专为第七史诗设计的智能辅助工具&#xff0c;通过五大核心功能模块&#xff0c;将繁琐操作转化为自动化流程&#xff0c;让玩家真正享受游戏乐趣而非被游戏所累。 【免费…

作者头像 李华
网站建设 2026/6/10 11:25:31

PaddlePaddle镜像如何实现模型灰度回退?故障应急方案

PaddlePaddle镜像如何实现模型灰度回退&#xff1f;故障应急方案 在AI系统频繁迭代的今天&#xff0c;一次看似微小的模型上线&#xff0c;可能引发服务雪崩。某金融风控平台曾因新版本模型误判率飙升&#xff0c;导致数千笔交易被错误拦截——直到运维团队耗时17分钟手动回滚才…

作者头像 李华