C++复合数据类型:vector|string

文章目录

  • 模板类vector
    • 初始化
    • 访问
    • 修改
    • 添加
  • 标准库类型string
    • 初始化
    • 访问
    • 拼接
    • 比较字符串

模板类vector

初始化

访问

修改

添加

数组长度在初始化时已经定义,访问范围也有限,数组长度还得通过计算
所以C++中定义了很多扩展的“抽象数据类型”,放于“标准库”中
对于数组功能进行扩展的一个标准库类型就是 “容器” vector。vector“容纳”着一堆数据对象,其实就是一组类型相同的数据对象的集合。

除了vector,c++ 11还新增了array模板类,和数组更加类似,长度固定,但更加方便安全,一般在实际应用中固定长度数组使用array,不固定长度数组使用vector。

#include<iostream>
#include<vector>

using namespace std;

int main()
{
    //默认初始化
    vector<int> v1;
    //列表初始化(拷贝初始化)
    vector<char> v2 = {'a', 'b', 'c', 'd'};
    vector<char> v3{'a', 'b', 'c', 'd'};

    //直接初始化
    vector<short> v4(5); //长度为5,初始化默认为0
    vector<long> v5(5, 100); // 长度5,初始化默认为100

    //访问元素
    cout << v4[2]  << endl;
    cout << v5[3] << endl;

    //修改
    v5[3] = 24;
    cout << v5[3] << endl;

    //对于越界访问,相对于数组更安全,会直接报错

    //遍历所有元素
    cout << "v5的长度:" << v5.size() << endl;
    for(int i = 0; i < v5.size(); i++)
    {
        cout << v5[i] << "\t";
    }
    cout << endl;

    //相对于数组还有一个功能:可以添加元素
    v5.push_back(56);

    //或者也可以通过范围循环
    for(int num: v5)
    {
        cout << num <<"\t";
    }
    cout << endl;    
}

标准库类型string

初始化

访问

拼接

比较字符串

同样可以使用 s.size()获取字符串长度。

#include<iostream>
#include<string>

using namespace std;

int main()
{
    //初始化

    //默认初始化
    string s1;

    //拷贝初始化
    string s2 = "hello world";
    string s3 = s2;

    //直接初始化
    string s4("hello python");
    string s5(5, 'h');

    cout << s5 << endl;

    //访问
    cout << s4[1] << endl;

    //修改
    s4[0] = 'H';
    cout << s4 << endl;

    //字符串长度
    cout << "s4的长度:" << s4.size() << endl;
    s4[s4.size() - 1] = 'N';
    cout << s4 << endl;

    //最好也不要越界访问

    //将s4所有字符都转换为大写
    for(int i; i < s4.size(); i++)
    {
        s4[i] = toupper(s4[i]);
    }
    cout << s4 << endl;

    //字符串拼接
    string s6("hello");
    string s7("my life");
    string s8 = s6 + ", " + s7 + "!"; //字符和字符串是不同的,如果此处用的是 ', ',则会报错
    cout << s8 << endl;

    // string s8 = "hello, " + "my life" 错误,两个字符串字面值常量
    // "asasa" 字符串字面值常量的类型并不是string,而是一个char类型的字符数组,所以无法调用string里定义的运算符+,至少要有一个对象是string类型
    //因此在拼接时按照左结合率,必须左边是string类型,这是为了和C兼容。

    //比较字符串: ==   !=    >    <    >=   <=
    
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/258415.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 tensorflow基础介绍

深度学习是一种基于人工神经网络的机器学习方法&#xff0c;其目标是通过模仿人脑的结构和功能&#xff0c;实现对大量复杂数据的学习和理解。它可以在图像识别、语音识别、自然语言处理等领域取得惊人的成就。 深度学习的引入引出了TensorFlow&#xff0c;它是一个由Google Br…

go语言指针变量定义及说明

go语言指针主要需要记住两个特殊符号&#xff0c; 一个是 & 用来获取变量对应的内存地址 另一个是 * 用来获取指针对应的变量值 下面是个最简单的go语言指针说明 package mainimport "fmt"//指针为内存地址func main() {var a string "指针对应的变量&…

互联网中的商品超卖问题及其解决方案:Java中Redis结合UUID的应用

前言 在设计商品下单和库存扣减&#xff0c;你一定遇到过这样的问题&#xff0c;库存扣减为0了&#xff0c;可是消费者还能下单&#xff0c;并将订单信息保存到了数据库里&#xff0c;针对商品超卖问题&#xff0c;作此篇以解决。 随着互联网商业的飞速发展&#xff0c;商品超…

【OpenHarmony】下载指定时间点的代码

1、正常初始化 repo init -u gitgitee.com:openharmony/manifest.git -b master --no-repo-verify 2、获取tag点的manifest文件 在OpenHarmony的CI系统上&#xff0c;进入tag管理系统。http://ci.openharmony.cn/workbench/cicd/codecontrol/tagsystem找到自己所需的tag文件…

PyQt6 QFontDialog字体对话框控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

钓鱼篇(上)

前言 钓鱼的核心主要还是思路要大胆。今天主要从一个完整的钓鱼流程进行讲解&#xff0c;记录下自己在学习这方面的知识时&#xff0c;如何将其有机结合起来&#xff0c;实现一个蓝队无感的钓鱼攻击流程&#xff0c;真正体验下如何从细节入手&#xff0c;将最危险的地方化为最…

LeetCode Hot100 51.N皇后

题目&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的…

LeetCode刷题--- 电话号码的字母组合

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…

Java Catching and Handling Exceptions(二)

一、Try with resources语句 try with resources语句是声明一个或多个资源的try语句。资源是程序使用完后必须关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象&#xff08;包括实现java.io.Closeable的所有对象&#x…

探秘 AJAX:让网页变得更智能的异步技术(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

基于ssm计算机科学与技术学习网站的设计与开发论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本在校学习网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

【MySQL】Sql优化之索引的使用方式(145)

索引分类 1.单值索引 单的意思就是单列的值&#xff0c;比如说有一张数据库表&#xff0c;表内有三个字段&#xff0c;分别是 id name numberNo&#xff0c;我给name 这个字段加一个索引&#xff0c;这就是单值索引&#xff0c;因为只有name 这一列是索引&#xff1b; 一个表…

【SpringBoot篇】基于Redis实现生成全局唯一ID的方法

文章目录 &#x1f354;生成全局唯一ID&#x1f339;为什么要生成全局唯一id&#x1f33a;生成全局id的方法✨代码实现 &#x1f354;生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处&#xff0c;其中包括&#xff1a; 数据…

k8s集群1.23.0版本部署说明

1.部署 k8s1.23.0版本与1.26.0版本的部署基本差不多&#xff0c;只不过k8s 1.23版本不需要部署cri-docker&#xff0c;所以只需要在1.26.0版本部署的基础上不要cri-docker的部署即可 参考&#xff1a;kubeadm部署k8s 1.26.0版本高可用集群_kubeadm 高可用集群-CSDN博客 搭建…

动手学深度学习1 导学

深度学习导学课 课程基础信息整理00 预告01 课程安排02 深度学习介绍QA 课程基础信息整理 课程安排&#xff1a; https://courses.d2l.ai/zh-v2/ ppt 代码 视频等链接都在文档里有展现 李沐老师课程所用电子书&#xff1a;https://zh-v2.d2l.ai/ B站课程链接&#xff1a; http…

java生产环境问题-mysql写存储过程定时删除大数据量表

问题&#xff1a;生产环境流水表已经达到4000w条数据&#xff0c;不管是查询还是统计都受到了一定程度的影响。所以创建了分表&#xff0c;按照每个月进行存储。但是主表的数据还是很多&#xff0c;所以想到定时删除。 注意&#xff1a;生产环境之前的配置不算高&#xff0c;所…

鸿蒙-arkTs:访问控制授权申请

module.json5文件中 requestPermissions 进行配置&#xff08;值为数组&#xff0c;可配置多个&#xff09; ohos.permission.INTERNET {"name": "ohos.permission.INTERNET" }

算法训练营Day19

#Java #二叉树 #双指针 开源学习资料 Feeling and experiences&#xff1a; 二叉搜索树的最小绝对差&#xff1a;力扣题目链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的…

年终数据分析报告这么写,领导超满意

年终总结是每年都要进行的重要工作&#xff0c;不仅是对过去一年的工作进行回顾&#xff0c;也是为了更好地准备和规划未来&#xff0c;值得我们投入更多的时间和精力。而无论是今年的成果还是明年的计划&#xff0c;为了避免假大空&#xff0c;都要基于事实&#xff0c;多用数…