c++ string到底是什麼?
要回答這個問題,先要了解什麼是basic_string。
看一下basic_string的宣告:
template < class chart, //定義字串中字元的型別
class traits = char_traits, //
basic_string::traits_type
class alloc = allocator//
basic_string::allocator_type
> class basic_string;
可見,basic_string實質上是乙個類模板。
再解釋的稍微詳細一些:
1.關於char_traits
宣告:
template struct char_traits;
作用:即:它指定了字元的屬性,並且提供了作用在字元或字串行上的某些操作的特定語義。
2.關於allocator
宣告:
template class allocator;//標頭檔案下 allocator:分配器
現在我們來看string的宣告:
typedef basic_string, allocator> string;
現在,我們明白了,原來是這麼回事:
用基本型別char例項化類模板basic_string,得到乙個具體的模板類,然後,將其typedef為string。
換句話說,string本質上是乙個模板類,就是basic_string, allocator>,string是對應的「簡稱」。 直觀地理解,string的例項物件(就是說 string str;中的str)是乙個char序列,但不同於char* str,stingr str帶有許多封裝好的針對自己的操作。
ps:basic_string還有其它例項,比如說:
typedef basic_string, allocator> wstring;
敏捷到底是什麼?
文 ivar jacobson 在支援軟體工程 比如rational統一過程rup 與敏捷陣營 比如scrum或是xp 之間,人們一直存在著衝突。也不難理解,因為這兩種方法間都是在用著彼此並不相容的方式來描述的。其實大可不必,因為他們背後的觀點全然是相輔相成的。關鍵在於該如何用對兩者來說都公平的方式...
我們到底是什麼?
我們到底是什麼?我們是一種生物電流 生物電流有幾種狀態,喜怒哀樂等,可以根據外部環境進行自我切換 該種生物電流附屬在一種器官硬體上面 我們可以從器官硬體上感知一些資訊,產生新的資訊生物電流,新產生的生物電流符合原先的標準 我們可以把資訊電流儲存在器官硬體上,但具體如何儲存等資訊無法被我們感知 我們的...
SDN到底是什麼
sdn到底是什麼?雖然這個概念已經被炒到了,但還沒有人對其給出乙個明確的概念。盛科網路總監張衛峰撰寫了自己關注sdn以來,對其認識的四個階段,最後乙個階段又回到了sdn字面的意思軟體定義網路,每個階段作者的新觀點,也會給我們帶來一些啟發。以下為原文 我對sdn的認識可以分為四個階段,最後乙個階段是在...