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

STL之string

目录

string常见的构造

迭代器

正向迭代器

使用方法

反向迭代器

const正向/反向迭代器

capacity接口

reserve 

 resize

string类对象的修改操作

 insert

头插

中间位置插入

erase

仅翻转字母

isalpha

 字符串中第一个唯一字符


string常见的构造

string s1("hello");
string s2(s1, 1, 2);
string s3(s1, 1, string::npos);
cout << s2 << endl;
cout << s3 << endl;

迭代器

正向迭代器

string::iterator;

iterator在string的类域中

使用方法

string::iterator it = s1.begin();
while (it != s1.end())
{cout << *it << endl;it++;
}

反向迭代器

string::reverse_iterator rit = s1.rbegin();
while (rit != s1.rend())
{cout << *rit << " ";rit++;
}

const正向/反向迭代器

int String2int(const string& num)
{string::const_iterator cit = num.begin();int count = 0;while (cit != num.end()){count = count * 10 + *cit - '0';++cit;}return count;
}

capacity接口

s1.clear();

大小减为0但capacity任然存在。

reserve 

往往会多开一些   最后一个位置放\0

 resize

会改变size和capacity,超出的位置用\0

s.resize(100,'x');

也可以自定义

string类对象的修改操作

 +=相比push_back和append用起来更舒服。

 insert

头插

s.insert(s.begin(),'x');

中间位置插入

s.insert(2,"2");

erase

s.erase(2,3);

从第二个位置开始删除三个字符。

仅翻转字母

917. 仅仅反转字母icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-only-letters/

class Solution {
public:string reverseOnlyLetters(string s) {string::iterator begin=s.begin(),end=s.end();while(begin<end){while(begin<end&&!isalpha(*begin))begin++;while(begin<end&&!isalpha(*end))end--;swap(*begin,*end);++begin,--end;}return s;}
};

思考:这段代码用数组咋实现?

isalpha

C/C++库函数(isalpha)判断字符是否为字母_c++ 判断 全英文-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_42410605/article/details/102508916

 字符串中第一个唯一字符

387. 字符串中的第一个唯一字符icon-default.png?t=N7T8https://leetcode.cn/problems/first-unique-character-in-a-string/

class Solution {
public:int firstUniqChar(string s) {vector<int> count(26,0);for(auto ch:s)count[ch-'a']++;for(int i=0;i<s.size();i++){if(count[s[i]-'a']==1)return i;}return -1;}
};

尝试vector的构造方法有c的定义方式过度到c++.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 技术指南:5分钟零成本实现本地AI知识库搭建
  • vue3+vant4父组件点击提交并校验子组件form表单
  • 【区块链 + 司法存证】优证云:基于 FISCO BCOS 的存证平台 | FISCO BCOS应用案例
  • 【Python自动化办公】复制Excel数据:将各行分别重复指定次数
  • c++多线程下崩溃一例分析 ACTIONABLE_HEAP_CORRUPTION heap failure block not busy DOUBLE
  • 如何优化Oracle数据库的性能?
  • 多目标应用:基于自组织分群的多目标粒子群优化算法(SS-MOPSO)的移动机器人路径规划研究(提供MATLAB代码)
  • 计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)
  • python web 框架 Tornado
  • GitHub项目评论被用来传播Lumma Stealer恶意软件
  • 【Linux】命令简介------迅速掌握Linux命令
  • html+css+js网页设计 文化历史 中华历史10个页面
  • ParallelsDesktop19可在任何Mac上运行Windows软件
  • python可视化-直方图
  • 解决Vscode Copilot连不上网问题
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 230. Kth Smallest Element in a BST
  • ES6语法详解(一)
  • learning koa2.x
  • magento2项目上线注意事项
  • Python中eval与exec的使用及区别
  • Vue官网教程学习过程中值得记录的一些事情
  • 分布式事物理论与实践
  • 区块链技术特点之去中心化特性
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2020)Java后端开发----(面试题和笔试题)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (生成器)yield与(迭代器)generator
  • (一) 初入MySQL 【认识和部署】
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .form文件_一篇文章学会文件上传
  • .htaccess配置常用技巧
  • .Net 4.0并行库实用性演练
  • .NET Framework .NET Core与 .NET 的区别
  • .net framework 4.8 开发windows系统服务
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .net6 webapi log4net完整配置使用流程
  • .netcore 获取appsettings
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [BZOJ5250][九省联考2018]秘密袭击(DP)