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