A:
區別主要是:
string的內存管理是由系統處理,除非系統內存池用完,不然不會出現這種內存問題。
char *的內存管理由用戶自己處理,很容易出現內存不足的問題。
當我們要存一個串,但是不知道其他需要多少內存時, 用string來處理就最好不過了。
當你知道了存儲的內存的時候,可以用char *,但是不如用string的好,用指針總會有
隱患。
用string還可以使用各種成員函數來處理串的每一個字符,方便處理。
用char *處理串,就不如string的方便了,沒有相應的函數來直接調用,而是要自己編
寫函數來完成串的處理,而且處理過程中用指針還很容易出現內存問題。
我建議盡量使用string,不用char*;
盡量使用vector(關聯數組),不用數組;
盡量使用迭代器,而不用指針。
B:
string這個是STL里的一個容器,操作字符串非常方便;
char *是一個指針,可以指向一個字符串數組,至於這個數組可以在棧上分配,也可以在堆上分配,堆得話就要你手動釋放了。
C++的話,感覺用string比較合適,當然如果數據比較簡單的話用char *也可以的
但是使用string的時候一定要注意構造和拷貝以及析構帶來的性能開銷,盡可能的減少構造,能使用引用的地方盡量用引用,減少不必要的構造
C:
區別主要是:
string的內存管理是由系統處理,除非系統內存池用完,不然不會出現這種內存問題。
char *的內存管理由用戶自己處理,很容易出現內存不足的問題。
當我們要存一個串,但是不知道其他需要多少內存時, 用string來處理就最好不過了。
當你知道了存儲的內存的時候,可以用char *,但是不如用string的好,用指針總會有
隱患。
用string還可以使用各種成……
D:
string代替char*也好,vector代替數組也好,都不是必須要這樣的
實際上用stl的東西還是要謹慎些,很多東西必須要注意而不是簡單替換
如果對stl一知半解,就簡單用vector代替數組,string代替char*,你會發現你的程序慢的跟牛一樣。。。
E:
STL是標准庫,內部對各種容器和相應的函數進行了封裝。
優點是已經封裝好,可以直接使用,且不用進行內存管理,其內部自己實現內存的申請與釋放。不易出錯。
缺點是其內部申請的內存要大於你要使用的內存,原因是便於數據的動態擴展,並且不同容器對內存的管理策略也不盡相同。完成同樣的一個任務可能會有多種方式,在不了解內部實現的情況下,不一定能夠使用最有效率的方法完成任務。
所以,在已知大小的情況下使用char*或charp[]比較好,在效率和內存使用上。
在未知長度,並且總體上並不會占用很多內存,對效率要求不高,或者沒有限制內存與效率的情況下使用string。
