C++标准库学习(三)--队列和string类

2023-11-16

今天学习了C++的queue和string类的基本操作。queue是自带的队列,应用很是方便。要注意,pop函数并不返回pop出的值。

#include <iostream>
#include <queue>
using namespace std;

int main()
{
    queue<int> queue_sample;//定义队列
    int i;
    for(i=1;i<10;i++)
    {
        queue_sample.push(i);//入队
    }
    for(i=1;i<10;i++)
    {
        cout<<queue_sample.front()<<endl;//访问队首元素
        queue_sample.pop();//出队,注意,不返回队首元素
    }
    if(queue_sample.empty())
    {
        cout<<"是空的!"<<endl;
    }
    else
    {
        cout<<"非空!"<<endl;
    }
    cout<<queue_sample.size();
    return 0;
}
接下来是string类的基本操作,这些操作和java竟然惊人相似,以后编程终于不用再麻烦地实现这些操作了!

#include <iostream>
#include <string>

using namespace std;
using std::string;

int main()
{
    //1.初始化string
    string sample = "";
    string sample2 = "";
    //2.连接操作
    char a = 'a';
    int i;
    for(i=0;i<26;i++)
    {
        char b = a+i;
        sample = sample+b;//重载的加号运算符,可以把一个字符或者字符串添加到末尾

    }
    sample = sample+"12121212";//加号亦可用于往结尾添加字符串
    cout<<sample.size()<<endl;//size是字符串的大小
    cout<<sample.length()<<endl;//length是字符串长度
    cout<<sample<<endl;

    //3.截取子串操作
    //substr操作,第一个参数是开始的下标,第二个是要截取的长度
    sample2 = sample.substr(0,10);//截取前十位
    cout<<"sample2是:"<<sample2<<endl;

    //4.比较操作,返回值为0相等,大于是1,小于是-1
    if(sample2.compare("abcdefghij")==0)
    {
        cout<<"返回值为0时相等!"<<endl;
    }

    //5.查找子串操作
    string sample3 = "abcaaeaabcabeabda";
    unsigned int j=0;
    //查找所有字符“a”的位置并且输出下标位置
    while(j<sample3.length())
    {
        int r = sample3.find('a',j);//find函数是返回sample3字符串从下标j开始的东西
        if(r==-1)//当无法找到的时候,find的返回值是-1
        {
            break;
        }
        cout<<r<<" ";
        j = r+1;
    }
    cout<<endl;
    //查找所有字符串“ab”的位置并输出初始下标,注意find函数是返回的第一个找到的位置
    j = 0;
    while(j<sample3.length())
    {
        int r = sample3.find("ab",j);
        if(r==-1)
        {
            break;
        }
        cout<<r<<" ";
        j = r+2;
    }
    cout<<endl;
    //6.替换字符串某一部分操作
    string sample4 = "12345abcde";
    sample4.replace(3,2,"6789");//把字符串“45”去掉,然后在原位置插入“6789”
    cout<<sample4<<endl;//replace 第一个参数是开始删除下标,第二个是要删除的长度,第三个参数是要替换进去的串

    //7.插入字符串某一部分操作
    string sample5 = "12345abcde";
    sample5.insert(3,"6789");//在第4个位置插入“6789”;
    cout<<sample5<<endl;
    //8.删除操作
    string sample6 = "12345abcde";
    sample6.erase(0,3);//删除从头开始的3个字符
    cout<<sample6<<endl;

    //使用迭代器来访问每个字符,迭代器类似于指针操作。注意,end()返回的是最后一个字符的后面!
    string::iterator x;
    for(x=sample6.begin();x!=sample6.end();x++)
    {
        cout<<*x<<endl;//这里需要解引用
    }
    return 0;
}
今天收获颇丰!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++标准库学习(三)--队列和string类 的相关文章

随机推荐

  • 三极管电路共集、共基、共射的区别

    共集 共基 共射指的是电路 是三极管电路的连接状态而不是三极管 所谓 共 就是输入 输出回路共有的部分 其判断是在交流等效电路下进行的 共集电极电路 三极管的集电极接地 集电极是输入与输出的公共极 共基极电路 三极管的基极接地 基极是输入与
  • 安装ubuntu系统时给/home分配空间太小,导致训练模型时数据集无法存放,所以给/home增大100GGB的存储空间

    1 从Windows系统中分配出100GB的存储空间 2 制作gparted的U盘启动项 3 插入U盘 进入bios界面 选择U盘启动项 4 进入gparted软件界面进行存储空间的转移重新分配 5 Exit退出 重新进入linux系统 参
  • 微信小程序 WebSocket 端口号配置

    https blog liuguofeng com p 4630 服务端开启 WebSocket 使用 WorkerMan phpSocket io 开启的端口为 2120 访问为 ws wanaioa unetu net 2120 由于微
  • 基于 java Swing 客户端 和 Spring Boot/Spring Cloud & Alibaba 后台管理系统

    基于 java Swing 客户端 和 Spring Boot Spring Cloud Alibaba 后台管理系统 基于 java Swing 客户端 和 Spring Boot Spring Cloud Alibaba 后台管理系统
  • 【Java JDK的使用方法】

    Java JDK的使用方法 第一步 同时按住窗口键和R键 在弹出的运行框中输入cmd打开编译框 第二步 输入cd 空格 地址 可以查看桌面文本文档的属性 找到桌面地址 第三步 notepad 空格 文件名 java 新建java文件 第四步
  • 何为UNP技术?

    为了解决移动视频监控系统中的这种穿NAT型 宇视科技特意提出了UNP UniversalNetwork Passport 万能网络护照 技术 目前 针对监控系统穿越NAT设备 防火墙和安全网闸时 基本上都是使用引流方案 内部服务器 双网口方
  • C++ 调用tensorflow

    安装protobuf 3 6 安装依赖软件 sudo apt get install autoconf automake libtool curl make g unzip 克隆版本为3 6 0的protobuf源码 git clone b
  • 8.翻转子串

    题目描述 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串 请将这个算法编写成一个函数 给定两个字符串s1和s2 请编写代码检查s2是否为s1旋转而成 要求只能调用一次检查子串的函数 给定两个字符串s1 s2 请返回bool
  • 1-如何安装ROS

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点

    C 之普通成员函数 虚函数以及纯虚函数的区别与用法要点 作者 luoweifu 字体 增加 减小 类型 转载 时间 2015 07 21 我要评论 本篇文章主要介绍了C 中的普通成员函数 虚函数以及纯虚函数 非常的详细 有需要的朋友可以参考
  • localstorage在uc无痕模式失效问题;

    做项目的时候发现localstorage在uc 无痕模式下失效 但是其他浏览器不会出现此类问题 补充 我的解决方案是使用cookie代替localstorage 但是有大神给出了解决方案我觉得非常nice 附 https www jians
  • Thrift快速入门和简单示例

    文章目录 Thrift介绍 Thrift的架构 Thrift的特性 开发速度快 接口维护简单 学习成本低 多语言 跨语言支持 稳定 广泛使用 快速入门例子 编译安装 创建Thrift IDL文件 通过编译器编译user thrift文件 生
  • 马踏棋盘问题(C-数据结构)

    题目 在8 8的国际象棋棋盘中 给出马的初始位置 求出马踏遍棋盘每个位置的路线图 棋盘中每个位置只能走一次 思路 国际象棋中 马走的规则和中国象棋相似 为斜两格行走 即向任意方向走两格 再向与前面行走方向垂直的方向走一格 每个位置最多可以向
  • C语言,BMP格式解析,生成不同位深的图片。

    0 前言 目录 0 前言 1 BMP格式详解 1 1图片的构成 1 2BMP格式 1 2 1文件头 1 2 2位图信息头 1 2 3调色板 1 2 4位图数据 2 生成 3 总结 最近工作任务繁重且对我来说小有难度 但是没有困难的事情做起来
  • 《XNA游戏开发》简介

    一 XNA简介 XNA是基于DirectX的游戏开发环境 以C 为开发语言 以 NET Framework 为基础 并加入游戏应用所需之函式库所构成的 XNA Framework 可开发XNA for Windows Phone游戏 Xbo
  • html的<form>表单的基本介绍及使用说明

  • 本地、服务器文件互传命令

    1 从服务器复制文件 文件夹到本地 scp r ZSL 192 168 53 54 data ZSL json D WorkSpace PyCharm myfiel 加上r可以复制整个文件夹 不加r只能复制单个文件 2 从本地复制文件夹到服
  • protocol buffer 简单使用

    protocol buffer占用空间小 传输速率高 并且是跨平台的 每个语言都有一套解释protocol buffer的特殊方式 我就介绍一下C 如何解析protocol buffer 首先我们要自己编译Protogen 地址 如下 ht
  • Synchronized 锁升级(无锁、偏向锁、轻量级锁、重量级锁)

    一概念 是Java中一个关键字 是JVM层面提供的同步锁机制 用于保证多线程访问同一资源的可见性 互斥性 即当一个线程已经获取资源锁时 其他试图获取的线程只能等待或者阻塞在那里 访问静态 synchronized 方法占用的锁是当前类的锁
  • C++标准库学习(三)--队列和string类

    今天学习了C 的queue和string类的基本操作 queue是自带的队列 应用很是方便 要注意 pop函数并不返回pop出的值 include