stl裡為什麼要用size type,而不直接用unsigned int 他們兩者其實是一回事吧

時間 2021-06-07 07:51:53

1樓:

因為兩者不是一回事。

拿 memcpy(void *dst, void const *src, size_t n) 舉例,在乙個 I16P32 的機器上,處理器明明理論上最多可以複製 位元組,但如果引數 n 用 unsigned int 的話最大就只能複製 個位元組了。

各個平台資料表示方式的記法:

其中 I 指 int,L 指 long,LL 指 long long,P 指指標(Pointer),而 n 表示對應資料所佔的位數。

比如 I16P32,指該平台的 int 是 16 位、指標是 32 位,而是否支援 long 和 long long 不詳。如果是 ILP32LL64 則是乙個 int 和 long 和指標都是 32 位、唯獨 long long 是 64 位的平台。

2樓:王芊

那照你這麼說為什麼會有 typedef,有的時候大家都是int,其實表達意思是不一樣的,有的表示的是a陣列的下標,有的b陣列的下標,有的就是表示某種變數的值。typedef 就是把它們分開來增加可讀性。

範圍for語句裡為什麼要用引用?

Jude Gao 問 既然如此為什麼在範圍迴圈語句中要用引用呢?其意義是什麼?答 用range for遍歷的時候,你遍歷的是元素的拷貝。每次拷貝都需要呼叫該元素型別的copy constructor。由於通常的use case中,我們不會對遍歷的元素進行更改,也就意味著copy by value的特...

為什麼STL的很多container的range version insert函式實現都有input iterator和forward iterator兩個過載?

QAMichaelPeng 以vector insert const iter where,iter first,iter last 為例,如果引數為forward iter,則可以多次遍歷訪問。先用一次遍歷訪問求出待插入元素個數,預分配好記憶體,就可以減少記憶體分配的開銷。而input itera...

為什麼要用stand in

cha Cha 我不確定你想問什麼,就從兩方面回答吧。1.為什麼用不定式to stand in enough to後面的不定式,傳統語法往往視為修飾整句的結果狀語,表示enough到了某個程度就會產生這個結果。而現代語法則認為這個不定式是修飾enough的補足語 能夠產生某種結果的程度,或者叫程度狀...