C++学习第二天(打卡)

C++ new 可以很方便的 分配一段内存。

比如  int *test= new int ;int n;cin>>n;int * test =new int [n];    
可以实现动态分配内存,比c的malloc 简洁多了,

 

  同样也能new 一个 结构体。总之挺方便的。

new 之后 不用了 要用delet free 内存

另外对空指针delete 是安全的。

  模板类:vector,也是一种动态数组。

 用法 vector<typename> vt {n_elem};

  模板类:array,不是动态滴~

用法 array<typename,n_elem> vt {};

 

C++的for循环多了一种新特性:可以基于范围。

for(double x:nums){x=x*100;
}

在for中  用于循环用的++i 和i++  前缀格式和后缀格式,前缀格式 就将值加一,然后返回。

但后缀版本会首先复制一个副本,将其加1,然后将其复制的副本返回。

但是经过我 ida 看汇编的结构,确是相反的,这个问题 

main           proc near               ; CODE XREF: _main_0↑j
.text:00414920
.text:00414920 var_D8          = byte ptr -0D8h
.text:00414920 j               = dword ptr -14h
.text:00414920 i               = dword ptr -8
.text:00414920
.text:00414920                 push    ebp
.text:00414921                 mov     ebp, esp
.text:00414923                 sub     esp, 0D8h
.text:00414929                 push    ebx
.text:0041492A                 push    esi
.text:0041492B                 push    edi
.text:0041492C                 lea     edi, [ebp+var_D8]
.text:00414932                 mov     ecx, 36h
.text:00414937                 mov     eax, 0CCCCCCCCh
.text:0041493C                 rep stosd
.text:0041493E                 mov     [ebp+i], 0
.text:00414945                 jmp     short loc_414950
.text:00414947 ; ---------------------------------------------------------------------------
.text:00414947
.text:00414947 loc_414947:                             ; CODE XREF: _main+65↓j
.text:00414947                 mov     eax, [ebp+i]
.text:0041494A                 add     eax, 1
.text:0041494D                 mov     [ebp+i], eax
.text:00414950
.text:00414950 loc_414950:                             ; CODE XREF: _main+25↑j
.text:00414950                 cmp     [ebp+i], 5
.text:00414954                 jge     short loc_414987
.text:00414956                 mov     esi, esp
.text:00414958                 push    offset j_??$endl@DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@@Z ; std::endl<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &)
.text:0041495D                 mov     edi, esp
.text:0041495F                 mov     eax, [ebp+i]
.text:00414962                 push    eax
.text:00414963                 mov     ecx, ds:__imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A.gap0 ; std::basic_ostream<char,std::char_traits<char>> std::cout
.text:00414969                 call    ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(int)
.text:0041496F                 cmp     edi, esp
.text:00414971                 call    j___RTC_CheckEsp
.text:00414976                 mov     ecx, eax
.text:00414978                 call    ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(std::basic_ostream<char,std::char_traits<char>> & (*)(std::basic_ostream<char,std::char_traits<char>> &))
.text:0041497E                 cmp     esi, esp
.text:00414980                 call    j___RTC_CheckEsp
.text:00414985                 jmp     short loc_414947
.text:00414987 ; ---------------------------------------------------------------------------
.text:00414987
.text:00414987 loc_414987:                             ; CODE XREF: _main+34↑j
.text:00414987                 mov     [ebp+j], 0
.text:0041498E                 jmp     short loc_414999
.text:00414990 ; ---------------------------------------------------------------------------
.text:00414990
.text:00414990 loc_414990:                             ; CODE XREF: _main+AE↓j
.text:00414990                 mov     eax, [ebp+j]
.text:00414993                 add     eax, 1
.text:00414996                 mov     [ebp+j], eax
.text:00414999
.text:00414999 loc_414999:                             ; CODE XREF: _main+6E↑j
.text:00414999                 cmp     [ebp+j], 5
.text:0041499D                 jge     short loc_4149D0
.text:0041499F                 mov     esi, esp
.text:004149A1                 push    offset j_??$endl@DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@@Z ; std::endl<char,std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char>> &)
.text:004149A6                 mov     edi, esp
.text:004149A8                 mov     eax, [ebp+j]
.text:004149AB                 push    eax
.text:004149AC                 mov     ecx, ds:__imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A.gap0 ; std::basic_ostream<char,std::char_traits<char>> std::cout
.text:004149B2                 call    ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(int)
.text:004149B8                 cmp     edi, esp
.text:004149BA                 call    j___RTC_CheckEsp
.text:004149BF                 mov     ecx, eax
.text:004149C1                 call    ds:__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(std::basic_ostream<char,std::char_traits<char>> & (*)(std::basic_ostream<char,std::char_traits<char>> &))
.text:004149C7                 cmp     esi, esp
.text:004149C9                 call    j___RTC_CheckEsp
.text:004149CE                 jmp     short loc_414990
for (i = 0; i < 5; i++) {cout << i << endl;}for (j = 0; j < 5; ++j) {cout << j << endl;}

恰恰相反。

const 这个标志符的作用也蛮大的,可以防止数据被修改,但是如果是一个指针指向一个变量,这个指针用了const,这样这个指针就不能修改这个数据,但是还是可以通过变量名字修改。

比较有趣的是函数指针,int (*pd)(int ); 可以直接把指针指向函数名就能执行了。用tpyedef 也能定义。挺有趣的。

 

今天在leetcode 做一道题的时候,遇到了一个问题:

  

runtime error: member access within null pointer of type 'struct ListNode'
while(l1!=NULL||l2!=NULL){sum=0;if(l1->next!=NULL) {y=l1->val;l1=l1->next;}if(l2->next!=NULL) {y=l2->val;l2=l2->next;}

我就用了这种方法,后来想了想,看了下别人的,发现这个错误在哪里了,如果l1 或者l2 有一个已经为NULL的时候,这时还能进入while中,但是如果 (l1->next或者l2->next)的时候,那个已经为空的指针就会访问到,但是他是NULL NULL并没有->next利用引用,因为他不是ListNode 结构体。

今天也了解到 hashmap,hashmap 在遍历里面的元素时所用的时间复杂度为O(1);这样在某些题目中可以用空间获取时间来获得最优解。

 Map<Integer,Integer> map = new HashMap<>();

map 有不少内置的方法可以使用,还不错。

转载于:https://www.cnblogs.com/liyuechan/p/10933970.html

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

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

相关文章

【数据结构与算法】【算法思想】 A *搜索算法

算法解析 这是一个非常典型的搜索问题。人物的起点就是他当下所在的位置&#xff0c;终点就是鼠标点击的位置。我们需要在地图中&#xff0c;找一条从起点到终点的路径。这条路径要绕过地图中所有障碍物&#xff0c;并且看起来要是一种非常聪明的走法。所谓“聪明”&#xff0…

第二十四期:管理 | 成功领导远程IT团队的7个技巧

管理虚拟工作环境需要各种真实世界的技能和工具。以下是激发创造力和生产力的策略。为了在日益缺乏人才和竞争激烈的IT世界中取得成功&#xff0c;越来越多的企业开始依赖于地理上分散的劳动力。 作者&#xff1a;John Edwards 管理虚拟工作环境需要各种真实世界的技能和工具…

310. Minimum Height Trees

输入&#xff1a;包含n个节点的无向图。n&#xff1a;表示从0到n-1&#xff0c;n个节点。edges&#xff1a;int数组&#xff0c;是从一个节点到另外一个节点。但是没有方向。 输出&#xff1a;以哪些节点为根节点&#xff0c;具有最小高度的树&#xff0c;返回这些根节点。 规则…

计算获取最小值和最大值

比如&#xff0c;在下面的销售业绩中&#xff0c;统计业务员的销售业绩中最大值和最小值。 下面是业务数据&#xff1a; CREATE TABLE [dbo].[SalesPerformance]([ID] [int] IDENTITY(1,1) NOT NULL,[Salesman] NVARCHAR(30) NOT NULL,[OrderDate] [DATE] NULL,[Sell] DECIM…

第二十五期:知乎用Go替代Python,说明了啥

众所周知&#xff0c;知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎&#xff0c;一部分人就说 Go 比 Python 好&#xff0c;Go 和 Python 两大社区的相关开发人员为此也争论过不少&#xff0c;似乎&#xff0c;谁也没完全说服谁。 作者&#xff1a;hello架构 大概每…

[Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

【问题描述】[中等] 【解答思路】 public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {int inLen inorder.length;int postLen postorder.length;// 特判if (inLen ! postLen) {throw new RuntimeException("输入错误");}return …

Springboot初次学习

-- 介绍取自springboot中文文档 &#xff1a;https://www.breakyizhan.com/springboot/3032.html Spring Boot可以轻松创建可以运行的独立的&#xff0c;生产级的基于Spring的应用程序。我们对Spring平台和第三方库采取自己的看法&#xff0c;以便您尽可能轻松地使用本教程。大…

第二十六期:英国建设下一代IOT基础设施的历史机遇和挑战

无论未来物联网发展的中心在哪里&#xff0c;都会带来一笔巨大的财富。但许多地区面临的真正障碍是缺乏可用的光纤基础设施来形成回程网络。接下来看一看全光纤在英国的推广情况。 作者&#xff1a;风车云马编译 世界各地的市政当局都在呼吁制定支持5G的基础设施计划。这些基…

[Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

【问题描述】[中等] 【解答思路】 copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] post) {if(prenull || pre.length0) {return null;}return dfs(pre,post);}private TreeNode dfs(int[] pre,int[] post) {if(prenull || pre.length0)…

第二十七期:Deepfake视频正在快速传播,也许区块链能够阻止这波“瘟疫”

“假新闻”一词已经成为当下的热门话题&#xff0c;而Deepfake(即看似真实&#xff0c;但实为伪造的视频操纵行为)则会进一步加剧民众与媒体之间的不信任危机。 作者&#xff1a;佚名来源 “假新闻”一词已经成为当下的热门话题&#xff0c;而Deepfake(即看似真实&#xff0c;…

POJ 1276 完全背包

Sample Input 735 3 4 125 6 5 3 350 633 4 500 30 6 100 1 5 0 1 735 0 0 3 10 100 10 50 10 10 Sample Output 735 630 0 0题意&#xff1a;你的银行卡里有 cash 元&#xff0c;而ATM机里有 n 种面值的钱&#xff0c;n行每种钱的数量和面值。  问 最多能从这台AT…

[Leetcode][第117题][JAVA][填充每个节点的下一个右侧节点指针][BFS]

【问题描述】[中等] 【解答思路】 1. 层次遍历 public Node connect(Node root) {if (root null)return root;Queue<Node> queue new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {//每一层的数量int levelCount queue.size();//前一个节点Node …

第二十八期:Java线程池的四种用法与使用场景

线程池的作用主要是为了提升系统的性能以及使用率。文章刚开始就提到&#xff0c;如果我们使用最简单的方式创建线程&#xff0c;如果用户量比较大&#xff0c;那么就会产生很多创建和销毁线程的动作&#xff0c;这会导致服务器在创建和销毁线程上消耗的性能可能要比处理实际业…

php连接mysql遇到的问题: (HY000/1130) 和 [caching_sha2_password]

说明一下我的mysql是安装在虚拟机上的 所以遇到的第一个问题就是访问问题 解决&#xff1a; update user set host % where user root; 重启mysql服务 试了很多方法&#xff0c;也找了很多方法只有这个可行。 问题2&#xff0c; 解决&#xff1a; https://www.cnblogs.com/un…

847. Shortest Path Visiting All Nodes(一)

输入&#xff1a;一个无向图&#xff0c;各个节点的标签是0、1、2…N-1。graph[i][j]表示从节点i到节点j有一条边。 输出&#xff1a;返回每个节点都访问一遍需要的最少步骤。 规则&#xff1a;各个节点可以重复访问。 分析&#xff1a;  如果可以知道从每个节点开始&#xf…

第二十九期:程序员们该如何破局!

我是实打实的程序员一枚&#xff0c;身为一个过来人&#xff0c;我觉得有必要说几点针对程序员们的破局思维&#xff0c;希望能解决不少人的迷茫与困惑。 作者&#xff1a;stormzhang 新读者可能不知道&#xff0c;老读者都晓得&#xff0c;虽说现在转身做了自媒体&#xff0c…

[Leetcode][第75题][JAVA][颜色分类][双(三)指针][计数排序]

【问题描述】[中等] 【解答思路】 1. 三指针 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) class Solution {public void sortColors(int[] nums) {int n nums.length;int p0 0, p2 n - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] …

SGU495 Kids and Prizes 概率DP,期望公式

题目大意&#xff1a;有N个盒子&#xff0c;里面都放着礼物&#xff0c;M个人依次去选择盒子&#xff0c;每人仅能选一次&#xff0c;如果里面有礼物则将礼物取出来&#xff0c;把空盒子放回原位&#xff0c;若没有礼物&#xff0c;则把空盒子放回原位。求礼物被拿走的个数的数…

847. Shortest Path Visiting All Nodes(二)

输入&#xff1a;有N个节点的无向图&#xff0c;每个节点被标注为0&#xff0c;1&#xff0c;…N-1。graph[i][j]表示从节点i到节点j有一条边。 输出&#xff1a;每个节点都访问一次&#xff0c;至少需要几步。 规则&#xff1a;可以重复访问一个节点。 分析&#xff1a;这道题…

第三十期:程序员报告:男性占比超87% 北京月薪12184元最高

1024“程序员节”&#xff0c;58同城招聘研究院发布程序员行业大数据报告显示&#xff0c;程序员男性占比高达87.29%。 作者&#xff1a;朝晖 1024“程序员节”&#xff0c;58同城招聘研究院发布程序员行业大数据报告显示&#xff0c;程序员男性占比高达87.29%&#xff0c;北…