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

c++ string之字符替换、string的swap交换

一.相关题型

例:将字符串中的空格全部替换成10%

最简单的方法是调用string类中的replace函数

但是replace这个函数的效率很低很低

我们可以使用如下做法——用空间换时间:

假如题目还要求在原字符串上修改,就可以再进行下面的操作,就是将tmp的值赋给s。但注意,他们是string类型,所以可以如下操作:

这里的assign函数是string提供的,表示给s分配一个字符串,用来替换s中原有的字符串,所以上面就是将tmp中的字符串分配给s。

还可以使用swap函数。

二.swap函数

swap函数是库中提供的一个全局模板函数

所以上面的代码可以改成:

这里有几次拷贝呢?一共三次深拷贝!!!因为通用swap函数会有一次拷贝构造,两次赋值重载。显然这个是非常糟糕的方式!!

那该怎么办??string自己重写了swap函数!!

三.string自己的swap函数

string类重写了swap函数,里面是直接将string对象的成员变量进行了交换,这就是简单的swap了,不会涉及到构造/赋值重载,因为都是内置类型。

但其实swap(s,tmp)调用的不是库里的那个模板函数/!!!!,因为string中也有一个两个参数的swap,通过引用传参,交换成员变量。


http://www.mrgr.cn/news/20238.html

相关文章:

  • Nacos配置的优先级
  • Mysql梳理1——数据库概述(上)
  • C++ 原子变量atomic variable
  • webCppCluster
  • vs2022 如何去掉 错误|警告的波形曲线 绿色波浪线
  • Python知识点:Python研发中,如何使用JIRA进行项目管理
  • uniapp壁纸项目笔记
  • QT:动态库与静态库的生成和使用
  • HTML 文本标签
  • 财税系统集成Java发票查验接口代码示例
  • 零基础国产GD32单片机编程入门(十四)内部RTC实时时钟及实战含源码
  • 计算机大专生没有出路了吗?听听过来人怎么讲!
  • 面对市场变革,企业数字化转型的必要性与挑战何在?
  • 竟然有50万个使用Flutter开发的应用了,这也太牛了!
  • 如何缩放C#中的img
  • 司法军警行业ITSM案例分析报告
  • 解决Can‘t load tokenizer for ‘bert-base-chinese‘.问题
  • 【Linux】常见指令及权限相关知识详细梳理
  • linux基础IO——动静态库——实现与应用学习、原理深度解析
  • C++入门基础知识50——【关于C++数字】之C++ 数学运算