sizt_t是
c++的乙個標準的
typedef.
全域性有效,定義在全域性命名空間中
size_type是
stl定義的,只在
namespace std
中有效vc6中定義
size_t
為typedef unsigned int size_t
size_type應該是
c++為例如
string
類和許多其他庫型別定義的配套型別
,使這些庫型別的使用與機器無關
,一般定義為
unsigned型別(
例如unsigned int unsigned long)
用法如下:
容器名字
::size_type
std::string::size_type index
是string
型別中的
size_type
型別是一種整型
一般用於陣列大小
string[std::string::size_type]
string::size_type型別
從邏輯上來講,size()
成員函式似乎應該返回整型數值,或如
2.2節「建議
」中所述的無符號整數。但事實上,
size
操作返回的是
string::size_type
型別的值。我們需要對這種型別做一些解釋。
string類型別和許多其他庫型別都定義了一些夥伴型別(
companion types
)。這些夥伴型別使得庫型別的使用是機器無關的
(machine-independent)
。size_type
就是這些夥伴型別中的一種。它定義為與
unsigned
型(unsigned int
或unsigned long
)具有相同的含義,而且可以保證足夠大可儲存任意
string
物件的長度。為了使用由
string
型別定義的
size_type
型別,程式設計師必須加上作用域操作符來說明所使用的
size_type
型別是由
string
類定義的。
任何儲存string
的size
操作結果的變數必須為
string::size_type
型別。特別重要的是,不要把
size
的返回值賦給乙個
int變數。
雖然我們不知道string::size_type
的確切型別,但可以知道它是
unsigned
型(2.1.1
節)。對於任意一種給定的資料型別,它的
unsigned
型所能表示的最大正數值比對應的
signed
要大一倍。這個事實表明
size_type
儲存的string
長度是int
所能儲存的兩倍。
使用int
變數的另乙個問題是,有些機器上
int變數的表示範圍太小,甚至無法儲存實際並不長的
string
物件。如在有16位
int型的機器上,
int型別變數最大只能表示
32767
個字元的
string
物件。而能容納乙個檔案內容的
string
物件輕易就會超過這個數字。因此,為了避免溢位,儲存乙個
string
物件size
的最安全的方法就是使用標準庫型別
string:: size_type
。string類型別和許多其他庫型別都定義了一些配套型別(
companion type
)。通過這些配套型別,庫型別的使用就能和機器無關(machine-independent
)。string::size_type
定義為unsigned
型,可以保證足夠大的儲存
string
物件的長度。
注意,任何儲存string
的size
操作結果的變數必須為
string::size_type
型別。尤其不能把
size
的返回值賦給乙個
int變數。(因為
size
返回的是乙個
unsigned
型別,而
int是
signed
型別。size
能表達的大小是
int的
2倍)。
string str("some string"); //通過字串字面值賦值給串
for (string::size_type ix = 0; ix != str.size(); ++ix) //此處不該為
int 用!=
,而不用
<=
C 中 有關迭代器失效的問題
對於順序容器,對其新增或者刪除元素,會有迭代器失效的情況。首先是erase,刪除的情況。假如刪除了,進行it 是肯定會報錯的 對於erase,會返回下乙個迭代器,避免失效。iter cont.erase iter 關聯容器,只需要 map iterator tmpiter iter iter dat...
面試中有關C 的若干問題
面試中有關c 的若干問題 by 晴天,2014.5.16晚 什麼是多型?簡要說一下c 中的多型的概念。1 定義 多型是指相同物件收到不同訊息或者不同物件收到相同訊息產生不同的行為。2 c 中多型分為兩種 a 編譯時多型 靜態繫結 通過函式過載來實現 b 執行時多型 動態繫結 通過虛函式來實現 動態繫...
python中有關賦值的問題
眾所周知,python的賦值和一般的高階語言的賦值有很大的不同,它是引用賦值。看下面的 1 a 5 b 8 a b 結果如下圖1 圖1開始的時候a指向的是5,b指向的是8,當a b的時候,b把自己指向的位址 也就是8的記憶體位址 賦給了a,那麼最後的結果就是a和b同時指向了8。我們可以用python...