詭異的迴圈

2022-01-19 07:37:43 字數 657 閱讀 3341

今天在公司看到一段**,如下:

for(tarray::titerator it(texturenames); it; ++it)

//other operation

剛開始並不覺得有什麼,很正常的for迴圈,但在我要向下翻得時候突然間覺得好像問題,這個迴圈什麼時候結束呢?看來只有在return的時候結束了,因為如果迭代器it最多會指向texturenames最後乙個元素的下乙個的位置,但it也不為空呀。那麼問題來了,怎麼在邏輯上保證每次都能找到呢?就算每次都能找到,那for迴圈後面的**豈不是永遠都沒有機會執行了?怎麼突然覺得自己用了這麼多年的for迴圈好像很陌生,就去查了下手冊,在執行每次操作之前,都會判斷第二個語句是否為true。突然想到難道這個類過載了bool操作?於是去找了一下,果然是這樣的。

下面是我自己的測試程式:

class

testobj

operator

bool() const

private

:

bool

m_data;

};int

main()

data = false; //

會隱式轉換的

for(; data;)

return0;

}

std map迴圈遍歷刪除元素出現詭異現象

std mapm1,m1.insert std make pair 4,4 for auto it m1.begin it m1.end 這段 在執行的時候會出現if語句執行完繼續執行else語句。為什麼會出現這種現象?先來看一下map中的erase函式 可以看到erase並沒有返回值,不像vect...

詭異的電梯

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 新的宿舍樓有 n 1 n 100000 層and m 1 m 100000 個學生.在新的宿舍樓裡 為了節約學生的時間也為了鼓勵學生鍛鍊身體 所以規定該宿舍樓裡的電梯在相鄰的兩層之間是不會連續停下 即,如果在第2層停下就不能在第...

詭異的日子

跟u3打交道的日子,你永遠無法體會到他的詭異。本週的最後一天,在結束了一上午的工作,準備下午再搞它一下的時候。美術提了乙個需求 不慎調錯了地形的兩層,土和草地,土在上,草地在下,而且就這樣已經刷了一周了,希望我們能把它們給換過來,換成土在下,草地在上。看到介面上有 保留alpha 的選項,直接就很放...