日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2023/12/10 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的C++学习第二天(打卡)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。