首页 > 编程语言 >算法day1

算法day1

时间:2024-10-08 22:43:55浏览次数:7  
标签:std string token day1 算法 atoi str 字符串

https://leetcode.cn/problems/evaluate-reverse-polish-notation/

  • 为什么 string& 要加 &:

    • string& token = tokens[i]; 中,& 表示传递的是 引用(reference),而不是值。这样做的好处是避免创建 token 的副本,从而提高效率,特别是在处理像 string 这种占用较大内存的对象时。传引用可以直接操作原对象,而不是创建新的临时对象。

    举个例子:

    • 如果不加 &,即 string token = tokens[i];,则会创建一个新的 string 对象,复制 tokens[i] 的内容。对于较大的 string,这会增加内存开销和耗时。
    • 加上 & 之后,token 只是 tokens[i] 的引用,不会复制数据,因此效率更高。
  • atoi 是什么意思

    • atoi 是 C 标准库中的一个函数,全称是 ASCII to Integer。它用于将字符串类型的数字(如 "123", "456")转换为 int 类型。
    • 具体来说,atoi(token.c_str())token 中的字符串转换为对应的整数。token.c_str() 是将 string 对象转换为 C 风格的字符数组(const char*),以便 atoi 函数处理。
    • 例如,atoi("123") 返回整数 123

 

                                                                                          在代码 atoi(token.c_str()) 中,使用 c_str() 的原因是:

  • atoi() 函数 是一个 C 语言 的函数,它只能接受 C 风格的字符串作为参数。C 风格字符串是以 const char* 类型的字符数组,并以空字符 \0 结尾。

  • token 是一个 std::string 类型,这是 C++ 的字符串类,不是 C 风格字符串。因此,直接将 token 传递给 atoi() 是行不通的。为了将 std::string 转换为 C 风格字符串,需要调用 c_str()

因此,token.c_str() 通过 c_str() 方法,将 C++ 的 std::string 转换为 C 风格的字符串(const char*),这样才能被 atoi() 函数正确处理。

为什么要这样处理:

C++ 标准库中的 std::string 和 C 标准库中的字符串类型(const char*)是两种不同的类型。std::string 类提供了更高级的字符串操作,但为了兼容和调用像 atoi() 这样只接受 C 风格字符串的函数,必须通过 c_str()std::string 转换为 C 风格字符串。

简单流程:

  1. tokenstd::string 类型,表示一个字符串对象,无法直接传给 atoi()
  2. token.c_str():调用 c_str() 函数将 std::string 转换为 const char* 类型,也就是 C 风格字符串。
  3. atoi(token.c_str())atoi() 接收 C 风格字符串,将它转换为整数类型并返回。

 

 

标签:std,string,token,day1,算法,atoi,str,字符串
From: https://www.cnblogs.com/spicy-food/p/18453213

相关文章

  • 【数据结构与算法】线性表
    文章目录一.什么是线性表?二.线性表如何存储?三.线性表的类型我们知道从应用中抽象出共性的逻辑结构和基本操作就是抽象数据类型,然后实现其存储结构和基本操作。下面我们依然按这个思路来认识线性表一.什么是线性表?定义线性表(LinearList)是由n(n>=0)个具有相同特性......
  • 基于稀疏CoSaMP算法的大规模MIMO信道估计matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
    1.算法仿真效果matlab2022a仿真结果如下(完整代码运行后无水印):     2.算法涉及理论知识概要      大规模MIMO技术通过增加天线数量来显著提升无线通信系统的性能。然而,随着天线数量的增长,信道状态信息(CSI)的准确获取变得越来越具有挑战性。传统的信道估计方法......
  • 【图论】迪杰特斯拉算法
    文章目录迪杰特斯拉算法主要特点基本思想算法步骤示例实现迪杰斯特拉算法基本步骤算法思路总结迪杰特斯拉算法迪杰特斯拉算法是由荷兰计算机科学家艾兹赫尔·迪杰特斯拉(EdsgerW.Dijkstra)在1956年提出的,用于解决单源最短路径问题的经典算法。该算法的目标是从一......
  • 【机器学习】线性回归算法简介 及 数学实现方法
    线性回归简介利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。数学公式:ℎ_(w)=w_1x_1+w_2x_2+w_3x_3+…+b=w^Tx+b概念​利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进......
  • 代码随想录算法训练营day9|●151.翻转字符串里的单词 ●卡码网:55.右旋转字符串 ●28.
    学习资料:https://programmercarl.com/0151.翻转字符串里的单词.html学习记录:151.翻转字符串里的单词(感觉C语言能考虑巧妙解法,而python直接搞就对了)c语言:把字符串整体反转,再用双指针法(slow,fast)依次翻转每一个单词,关键在于如何移除多余空格,用slow指针找到要替换到的位置,用fast......
  • 代码随想录算法训练营 | 62.不同路径,63. 不同路径 II
    62.不同路径题目链接:62.不同路径文档讲解︰代码随想录(programmercarl.com)视频讲解︰不同路径日期:2024-10-08想法:第一行第一列只有一种方法,除此之外的各自的方法数由其左和上的格子的和得到。Java代码如下:classSolution{publicintuniquePaths(intm,intn){......
  • 基于MUSIC算法的六阵元圆阵DOA估计matlab仿真
    1.程序功能描述基于MUSIC算法的六阵元圆阵DOA估计matlab仿真.2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.核心程序%MUSIC谱矩阵Pmusic=zeros(90/steps+1,360/steps);fortheta=0:steps:90forphi=0:steps:360-steps%计算时......
  • 探索优化的艺术:深入理解模拟退火算法
    探索优化的艺术:深入理解模拟退火算法在解决复杂优化问题的过程中,选择合适的算法至关重要。模拟退火算法(SimulatedAnnealing,SA)作为一种基于概率的启发式搜索方法,因其在处理大规模和复杂优化问题时表现出的卓越能力,近年来受到了广泛关注。本文将带您深入了解模拟退火算法的原理、......
  • 基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印)  2.算法运行软件版本MATLAB2022A 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)figureplot(Error2,'linewidth',2);gridonxlabel('迭代次数');ylabel('遗传算法优化过程');legend('Averagefitness'......
  • 算法学习--3 (快速排序)
    引言快速排序(QuickSort)是计算机科学中最流行的排序算法之一,它基于“分治”思想,通过递归地将数组分成两部分并分别排序,从而实现排序的目的。与冒泡排序和选择排序等简单算法相比,快速排序在平均情况下的性能非常优越,因此广泛应用于实际场景。本文将详细介绍快速排序的工作原理......