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

学习笔记(C++篇)—— Day 9

1.string 类

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。由此引进了string类。

2.auto和范围for

auto的可以使得代码更加简化,auto的用法实例如下:

#include<iostream>
#include <string>
#include <map>
using namespace std;
int main()
{std::map<std::string, std::string> dict = { { "apple", "苹果" },{ "orange","橙子" }, {"pear","梨"} };// auto的用武之地//std::map<std::string, std::string>::iterator it = dict.begin();auto it = dict.begin();while (it != dict.end()){cout << it->first << ":" << it->second << endl;++it;}return 0;
}

auto支持作返回值(慎用)。 

范围for的用法示例:

int main()
{int array[] = { 1, 2, 3, 4, 5 };// C++98的遍历for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i){array[i] *= 2;}for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i){cout << array[i] << endl;}// C++11的遍历for (auto& e : array)e *= 2;for (auto e : array)cout << e << " " << endl;string str("hello world");//赋值,自动取容器的数据赋值给左边的值//自动++,自动判断结束for (auto ch : str){cout << ch << " ";}cout << endl;return 0;
}

后置追加

int main()
{string s1("hello");s1.push_back(',');s1.push_back('w');cout << s1 << endl;s1.append("world");cout << s1 << endl;return 0;
}

这段代码的运行结果是:

string的用法较多,具体更多的用法,请参考相关往回走哪,这里不再做叙述。

3.题目练习

917. 仅仅反转字母 - 力扣(LeetCode) 

class Solution {
public:bool isLetter(char ch){if (ch >= 'a' && ch <= 'z')return true;if (ch >= 'A' && ch <= 'Z')return true;return false;}string reverseOnlyLetters(string S) {if (S.empty())return S;size_t begin = 0, end = S.size() - 1;while (begin < end){while (begin < end && !isLetter(S[begin]))++begin;while (begin < end && !isLetter(S[end]))--end;swap(S[begin], S[end]);++begin;--end;}return S;}
};

415. 字符串相加 - 力扣(LeetCode)

class Solution {
public:string addstrings(string num1, string num2){// 从后往前相加,相加的结果到字符串可以使用insert头插// 或者+=尾插以后再reverse过来int end1 = num1.size() - 1;int end2 = num2.size() - 1;int value1 = 0, value2 = 0, next = 0;string addret;while (end1 >= 0 || end2 >= 0){if (end1 >= 0)value1 = num1[end1--] - '0';elsevalue1 = 0;if (end2 >= 0)value2 = num2[end2--] - '0';elsevalue2 = 0;int valueret = value1 + value2 + next;if (valueret > 9){next = 1;valueret -= 10;}else{next = 0;}//addret.insert(addret.begin(), valueret+'0');addret += (valueret + '0');}if (next == 1){//addret.insert(addret.begin(), '1');addret += '1';}reverse(addret.begin(), addret.end());return addret;}
};

 

http://www.dtcms.com/a/263933.html

相关文章:

  • Terraform Helm:微服务基础设施即代码
  • Kubernetes Pod 调度基础
  • 飞算JavaAI:重构软件开发范式的智能引擎
  • 【SQL知识】PDO 和 MySQLi 的区别
  • python __doc__
  • gateway白名单存储nacos,改成存储数据库
  • leetcode124-二叉树中的最大路径和
  • CPU缓存一致性
  • AI智能体在用户行为数据分析中有哪些应用?
  • 具身多模态大模型在感知与交互方面的综述
  • (十一)Spring WebSocket
  • Ansys Speos | Speos Camera 传感器机器视觉示例
  • vue-35(使用 Jest 和 Vue Test Utils 设置测试环境)
  • 列表元素滚动动画
  • LAN8720 寄存器概览和STM32 HAL库读写测试
  • CSS 安装使用教程
  • FreeRTOS任务切换
  • 力扣网C语言编程题:寻找两个正序数组的中位数
  • RIP 技术深度解析
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • [创业之路-457]:企业经营层 - 蓝海战略 - 价值创新不仅仅是技术创新
  • Java项目:基于SSM框架实现的智慧养老平台管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 大麦基于HarmonyOS星盾安全架构,打造全链路安全抢票方案
  • 【机器学习深度学习】模型微调的基本概念与流程
  • 06会话管理
  • 前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
  • 量化选股策略 聚宽
  • 如何利用Charles中文版抓包工具提升API调试与网络性能
  • 二刷 苍穹外卖day10(含bug修改)
  • 如何使用StartUML绘制类图,用例图,时序图入门