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,還得看這個函式...