C 學習記錄

2021-08-19 19:52:10 字數 2123 閱讀 9217

reserve和resize的區別

reserve是容器預留空間,但並不真正建立元素物件,在建立物件之前,不能引用容器內的元素,因此當加入新的元素時,需要用push_back()/insert()函式。

resize是改變容器的大小,並且建立物件,因此,呼叫這個函式之後,就可以引用容器內的物件了,因此當加入新的元素時,用operator操作符,或者用迭代器來引用元素物件。

再者,兩個函式的形式是有區別的,reserve函式之後乙個引數,即需要預留的容器的空間;resize函式可以有兩個引數,第乙個引數是容器新的大小,第二個引數是要加入容器中的新元素,如果這個引數被省略,那麼就呼叫元素物件的預設建構函式。

size_t型別的意義

size_t和unsigned int有所不同,size_t的取值range是目標平台下最大可能的陣列尺寸,一些平台下size_t的範圍小於int的正數範圍,又或者大於unsigned int.最典型的,在x64下,int還是4,但size_t是8.這意味著你在x64下最大可能開闢的陣列尺寸是2^64.如果你使用int或者unsigned int,那麼在x64下如果你的**中全部使用uint作為陣列的尺寸標記,那麼你就會失去控制2^32尺寸以上的陣列的機會.雖然現在在x64上開闢乙個大於2^32大小的連續陣列依然是個不大可能的事情

string erase函式的使用

三種用法:

(1)erase(pos,n); 刪除從pos開始的n個字元,比如erase(0,1)就是刪除第乙個字元

(2)erase(position);刪除position處的乙個字元(position是個string型別的迭代器)

(3)erase(first,last);刪除從first到last之間的字元(first和last都是迭代器)

string類下的begin,end,rbegin,rend的用法

begin

語法:iterator begin();

解釋:begin()函式返回乙個迭代器,指向字串的第乙個元素.

rbegin

語法:const reverse_iterator rbegin();

解釋:rbegin()返回乙個逆向迭代器,指向字串的最後乙個字元。

rend

語法:const reverse_iterator rend();

解釋:rend()函式返回乙個逆向迭代器,指向字串的開頭(第乙個字元的前乙個位置)。

四個函式的指示位置說明

reinterpret_cast (expression)reinterpret_cast運算子是用來處理無關型別之間的轉換;它會產生乙個新的值,這個值會有與原始引數(expressoin)有完全相同的位元位。

const_cast

用法:const_cast< type-id > (exdivssion)

該運算子用來修改型別的const或volatile屬性。除了const 或volatile修飾之外, type_id和exdivssion的型別是一樣的。

常量指標被轉化成非常量指標,並且仍然指向原來的物件;

常量引用被轉換成非常量引用,並且仍然指向原來的物件;常量物件被轉換成非常量物件。

chrono

chono庫主要包含了三種型別:時間間隔duration、時鐘clocks和時間點time point。

//time_point有乙個函式time_since_epoch()用來獲得2023年1月1日到time_point時間經過的duration。

#include

#include

#include

int main ()

C 學習記錄

由於之前寫c c 程式時,動不動就容易報錯,也就沒繼續用,一直覺得c 很難。最近在學習機器學習時,用到了乙個c 神經網路庫,並且在菜鳥教程中看到了c 的教程,於是學了一下,發現根本沒有想象中的那麼難,可能也是這個教程講的比較好吧。現在把一些學到的比較重要的點記錄一下吧!1.ifndef 突然覺得在標...

C 學習記錄

原創 主要是c 和c 不同的地方,會寫一下,流程控制什麼的都差不多,比較適合c 轉c 的人看 以前沒有系統的學過c 現在補一下,以前完全是為了看懂別人的 稍微看一下,也沒有太想在這方面下功夫,學一點是一點,目標是能修改別人的c 服務端程式。一.包含 包含原理上什麼檔案都能包含進來,但是一般只包含.c...

c 學習記錄

時隔多年,再次學習c 原因在與看了很多開源 的實現,都是c c,不禁想彌補一下這方面的知識。在c c 中,為了解決一些頻繁呼叫的函式,節省棧空間,引入了inline關鍵字,將呼叫的函式實現直接替換到函式處。從上述可以看出兩點 1.inline是一種對編譯器的建議,真正是否inline,還得看這個函式...