【C++】学习笔记——string_1

文章目录

  • 四、模板初阶
    • 2. 类模板
  • 五、STL简介
    • 1. 什么是STL
    • 2. STL的六大组件
    • 3. 如何学习STL
  • 六、string类
    • 1. string类对象的容量操作
  • 未完待续


四、模板初阶

2. 类模板

函数模板就是:模板 + 函数;类模板就是:模板 + 类。和函数模板用法基本相同。类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类

#include<iostream>
using namespace std;template<class T>
class Stack
{
public:void push(const T& x){//}
private:T* _a;int _top;int _capacity;
};int main()
{// 这里就是将类模板显示实例化Stack<int> s1;Stack<double> s2;return 0;
}

声明和定义分离则这样用:

#include<iostream>
using namespace std;template<class T>
class Stack
{
public:void push(const T& x);
private:T* _a;int _top;int _capacity;
};template<class T>
void Stack<T>::push(const T& x)
{//
}int main()
{return 0;
}

注意:类模板不能声明和定义分两个文件。(在当前)

五、STL简介

1. 什么是STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

2. STL的六大组件

在这里插入图片描述

3. 如何学习STL

非常简单的一句话:学习STL的三个境界:能够熟用STL;了解泛型编程的内涵;能够拓展STL

六、string类

  1. string 是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作.
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;
  4. 不能操作多字节或者变长字符的序列。

在使用string类时,必须包含#include头文件以及using namespace std;

我们来浅尝一下 string 。这是 string 类的构造函数的链接
在这里插入图片描述
具体内容可以看上面的链接。我们来实现一下。(其实完全不需要全都掌握,只需要掌握几个常用的即可,其他的偶尔看看文档就行)

#include<iostream>
#include<string>
using namespace std;void test1()
{string s1;string s2("Hello,World!");string s3(s2);string s4(s2, 5, 3);string s5(s2, 5, 10);string s6(s2, 5);string s7(10, '#');cout << s1 << endl;cout << s2 << endl;cout << s3 << endl;cout << s4 << endl;cout << s5 << endl;cout << s6 << endl;cout << s7 << endl;
}int main()
{test1();return 0;
}

结果:
在这里插入图片描述

咦?cout 为什么能输出 string类 ?原因库里面已经自动实现了重载流插入和流提取函数,也实现了赋值重载函数。
在这里插入图片描述

1. string类对象的容量操作

链接
在这里插入图片描述

#include<iostream>
#include<string>
using namespace std;void test2()
{string s1("Hello,World!");// size函数返回字符串的长度for (size_t i = 0; i < s1.size(); ++i){// 重载 s1.operator[](i) 可读可写cout << s1[i] << ' ';}cout << endl;for (size_t i = 0; i < s1.size(); ++i){// 可写++s1[i];cout << s1[i] << ' ';}cout << endl;
}int main()
{test2();return 0;
}

在这里插入图片描述
函数重载,多一个带 const 修饰的函数,const 对象则调用这个,使其可读不可写。
在这里插入图片描述
string还有一种遍历方法,就是 迭代器(iterator)
在这里插入图片描述
iterator 是一个类型,在类域里面。

#include<iostream>
#include<string>
using namespace std;void test3()
{string s1("Hello,World!");// iterator是一个类型,在类域里面,需要被类作用域包含// it是变量名称// 成员函数begin返回一个iterator(迭代器),指向字符串的起始位置// 可以省事写成 auto it = s1.begin()string::iterator it = s1.begin();// end函数和begin一样,只是指向字符串的末尾的下一个地址(因为老美喜欢左闭右开的形式)while (it != s1.end()){cout << *it << ' ';++it;}cout << endl;
}int main()
{test3();return 0;
}

结果:
在这里插入图片描述
注意:迭代器是行为像指针的一个类型,但其不一定是指针
范围for 也能遍历容器,但是范围for在底层还是迭代器。

for (auto e : s1)
{//
}

未完待续

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust HashMap

一、HashMap是什么&#xff0c;怎么用 1、HashMap是什么 HashMap 也是 Rust 标准库中提供的集合类型&#xff0c;但是又与动态数组不同&#xff0c;HashMap 中存储的是一一映射的 KV 键值对&#xff0c;并提供了平均时间复杂度为 O(1) 的查询方法。 2、HashMap怎么用 &…

elementui的el-select+el-tree+el-input实现可搜索的下拉树组件

部分实现代码如下 <template> <div><el-selectv-model"item.TableName"placeholder"请选择":disabled"!item.disabled"visible-change"handleVisible"ref"TableName"><el-input placeholder"请输…

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

el-tree动态设置是否全部展开属性,值已经改变,但是没有展开或折叠

项目场景&#xff1a;使用el-tree组件&#xff0c;搜索后动态设置数据全部展示 问题描述 el-tree动态设置是否全部展开属性&#xff0c;值已经改变&#xff0c;但是没有展开 <el-selectv-model"TableName"placeholder"请选择"><el-input placeho…

Objective-C大爆炸:从零到单例模式

oc学习笔记&#xff08;一&#xff09; 文章目录 oc学习笔记&#xff08;一&#xff09;oc与c语言的区别#import的用法foundation框架NSLog函数NSString类型符号的作用oc中的数据类型 类与对象概念&#xff1a; 创建第一个类类的定义类的实现类加载对象的产生和使用 self语法id…

最新springboot家乡特色推荐系统

采用技术 最新springboot家乡特色推荐系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能 系统首页 用户注册 文章分享 个人中心 管理员模…

经典文献阅读之--EarlyBird(用于BEV中多视图跟踪的早期融合)

0. 简介 多视角聚合技术有望克服多目标检测和跟踪中的遮挡和漏检问题。最近的多视角检测和三维物体检测方法通过将所有视角投影到地面平面上&#xff0c;并在鸟瞰图中进行检测&#xff0c;取得了巨大的性能提升。《EarlyBird: Early-Fusion for Multi-View Tracking in the Bi…

AtCoder Beginner Contest 351 A-F题解

比赛链接&#xff1a;https://atcoder.jp/contests/abc351比赛时间&#xff1a;2024 年 4 月 27 日 20:00-21:40 A题&#xff1a;The bottom of the ninth 标签&#xff1a;循环、模拟题意&#xff1a;给定 A A A队 9 9 9局的得分和 B B B队 8 8 8局的得分。求 B B B队的第 9…

面试经典150题——反转字符串中的单词

面试经典150题 day21 题目来源我的题解方法一 双指针方法二 库函数正则匹配方法三 自定义函数方法四 双端队列 题目来源 力扣每日一题&#xff1b;题序&#xff1a;151 我的题解 方法一 双指针 先将首尾的空格删除&#xff0c;然后使用两个指针从后往前遍历&#xff0c;end指…

strcpy,strncpy函数详解

strcpy函数 在C语言中&#xff0c;strcpy()函数用于将一个字符串复制到另一个字符串中。 函数原型如下&#xff1a; char *strcpy(char *destination, const char *source);参数解释&#xff1a; destination&#xff1a;目标字符串&#xff0c;将会被复制到。source&#…

(iFlyCode、FREEGPT、Copilot、AIPlus、稳定高效)分享好用的ChatGPT

目录 1、iFlyCode 2、FREEGPT 3、Microsoft Copilot: 你的日常 AI 助手 4、AIPlus

Ubuntu中常用的解/压缩命令

Ubuntu中常用的解/压缩命令 一、tar文件tar.tgz文件tar.gz文件tar.bz文件tar.bz2文件tar.Z文件 二、zip文件三、rar文件四、gz文件五、bz文件bz2文件 六、Z文件七、tgz文件八、lha文件 一、tar文件 解压&#xff1a;tar xvf FileName.tar 压缩&#xff1a;tar cvf FileName.ta…

Servlet(三个核心API介绍以及错误排查)【二】

文章目录 一、三个核心API1.1 HttpServlet【1】地位【2】方法 1.2 HttpServletRequest【1】地位【2】方法【3】关于构造请求 1.3 HttpServletResponse【1】地位【2】方法 四、涉及状态码的错误排查&#xff08;404……&#xff09;五、关于自定义数据 ---- body或query String …

计算机网络 备查

OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元&#xff08;PDU&#xff09;和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段&#xff0c;并加上TCP头 4.网络层添加IP地址信息…

nuxt3使用记录五:禁用莫名其妙的Tailwind CSS(html文件大大减小)

发现这个问题是因为&#xff0c;今天我突然很好奇&#xff0c;我发现之前构建的自动产生的200.html和404.html足足290k&#xff0c;怎么这么大呢&#xff1f;不是很占用我带宽&#xff1f; 一个啥东西都没有的静态页面&#xff0c;凭啥这么大&#xff01;所以我就想着手动把他…

用Typescript写自动化工作流

项目地址&#xff1a;acao 挺早之前写过一个工具帮我构建项目并发布到指定平台&#xff0c;主要流程就是获取项目根目录下的配置文件&#xff0c;然后根据配置文件在本地通过 docker 构建一个镜像然后 push 到镜像仓库&#xff0c;最后通过 ssh 连接指定的服务区执行发布任务 …

Github Action Bot 开发教程

Github Action Bot 开发教程 在使用 Github 时&#xff0c;你可能在一些著名的开源项目&#xff0c;例如 Kubernetes&#xff0c;Istio 中看到如下的一些评论&#xff1a; /lgtm /retest /area bug /assign xxxx ...等等&#xff0c;诸如此类的一些功能性评论。在这些评论出现…

Django-基础篇

Django是一个开放源代码的Web应用框架&#xff0c;由Python语言编写。它遵循MVC&#xff08;Model-View-Controller&#xff09;的软件设计模式&#xff0c;使开发者能够以高效、可扩展和安全的方式构建Web应用程序。 Django具有以下特点和优势&#xff1a; 强大的功能&#x…

MR混合现实情景实训教学系统在军事课堂上的应用

在现代军事教育中&#xff0c;实践教学的重要性日益凸显。传统的军事课堂教育方式往往侧重于理论知识的传授&#xff0c;而忽视了实践操作的重要性。而MR混合现实情景实训教学系统的引入&#xff0c;为军事课堂教育带来了全新的可能性。 MR混合现实情景实训教学系统是一种结合了…

面试笔记——线程池

线程池的核心参数&#xff08;原理&#xff09; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)corePoolSize …