學習CSTL時遇到的小疑問

2022-08-11 03:30:06 字數 1005 閱讀 9998

1樓:校園古惑仔

我再來回答一下~~

這個程式確實編譯通過但是不能執行(vc6下),首先test[ 0 ] = 1只是乙個賦值操作,他不會管有沒有記憶體空間,所以使用這條語句之前一定要為其分配記憶體空間,比如說加一句:test.resize(10,0)。

否則編譯通過也執行不了。而push系列的操作首先在佇列裡會為其分配一塊記憶體空間,然後將數值放進去。所以他並不需要提前用別的語句分配記憶體。

2樓:匿名使用者

不用push_front沒有在test中開闢出儲存空間。

test.size()當然是0了,沒有存東西的test當然也就沒有test[0]這個了。

3樓:

你這樣想一下,test[ 0 ] = 1 是把test裡面的第乙個元素賦值為1,但問題是這個容器裡面還沒有任何元素呢,「test明明含有乙個元素」這句話從何而來呢

比如在push_back或push_front以及其他的一些比如構造操作後才會有元素的,而下標操作符返回的是指向元素的引用

4樓:清影星河

這個程式只是編譯通過了,執行不起來的(用vc++6.0 vs.net2003試過)

test[0] = 1;

會發生執行時錯誤,因為 stl 還沒有為 test[0] 分配記憶體空間

test[0] 的分配時機是第一次呼叫 test.push_front()

test[1] 的分配時機是第二次呼叫 test.push_front()

test[2] 的分配時機是第三次呼叫 test.push_front()

...如果提前就把 test[n] 都分配好了,那麼 test.size() 就是無窮大了

如果由於使用 test[3] = 3; 而導致 test[0], test[1], test[2] 都被分配,會令人難以理解(因為 deque 是一種只能對頭尾進行操作的資料結構)

如果樓主用的是更高階的編譯器,或許就需要更高階的解釋了^_^

英語翻譯的小疑問,一個英語翻譯的小疑問。

原問題 一個英語翻譯的小疑問。有一個數學公式,c a b。我想把 a代表長度,b代表寬度 譯成英語,這個 代表 可以翻譯成stand for嗎?或者有什麼跟好的單詞可以譯作 代表 提問者 伊貝爾伊貝爾 回答 a代表長度,b代表寬度 a is the length of b is the width ...

學習C類時,遇到的常成員為題,求解AAinti

a a int i a i r a 上面這句話的意思是說 定義建構函式a int i 初始化類中的成員變數a i r a 這段 寫的很好呀?有什麼問題嗎?c class a private int x public a int i 0 x 0 a int i 0 x i a a 1 輸出1,這個沒什...

遇到火災時生存的作文,遇到火災時生存的作文400字

火在生活中必不可少,但火災也不時發生,消防安全重於泰山,為了防範火災,學校舉行了防火演練。正當同學們還沉浸於書香之中的時候,篤 嗚 篤 警報急促地拉響了,劃破了校園的寂靜。同學們趕緊拿出事先準備好的溼毛巾捂住口鼻,已免有毒氣體滲入,然後俯低身子,分成兩隊,前後匍匐撤離。一跑出教室,煙霧籠罩著整個校園...