[問題] 有關STL,這樣的寫法?

看板C_and_CPP (C/C++)作者 (安全不會當)時間16年前 (2009/07/25 22:47), 編輯推噓4(4010)
留言14則, 3人參與, 最新討論串1/1
請問各位 我在某處看到這樣的CODE *lower_bound(v.begin(), v.end(), n) = n; v是vector,為什麼函式是寫在左邊 我第一次看到 先謝謝各位的解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.143.215

07/25 22:52, , 1F
因為function call運算子,也就是lower_bound的() 運算順序
07/25 22:52, 1F

07/25 22:53, , 2F
比 = 運算子高,所以只要先執行該函數後傳回 l-value (左值)
07/25 22:53, 2F

07/25 22:53, , 3F
就可以寫在 = 的左邊
07/25 22:53, 3F

07/25 22:56, , 4F
不好意思,我想再請問*又是要做什麼呢?
07/25 22:56, 4F

07/25 22:57, , 5F
然後我也不太懂這樣寫的用處= =
07/25 22:57, 5F

07/25 22:58, , 6F
vector的iterator做完dereference後,相當於 v[0] 存取第0個
07/25 22:58, 6F

07/25 22:59, , 7F
元素,當然0只是舉例。
07/25 22:59, 7F

07/25 23:04, , 8F
很謝謝你喔! 我需要咀嚼一下。
07/25 23:04, 8F

07/25 23:10, , 9F
舉例,整個vector只有兩個值 v[0]=3 跟 v[1]=4; 且 n =4
07/25 23:10, 9F

07/25 23:11, , 10F
執行 *lower_bound(v.begin(), v.end(), n) 代表尋找整個v中
07/25 23:11, 10F

07/25 23:12, , 11F
數值至少有4的所在。故相當於 v[1]。整個簡化完,就是 v[1]=4;
07/25 23:12, 11F

07/25 23:12, , 12F
這是沒意義的動作,因為數值沒有被改變
07/25 23:12, 12F

07/25 23:14, , 13F
我明白了,感謝!!
07/25 23:14, 13F

07/25 23:50, , 14F
v[0]= 5; v[1]= 6; 時 會使 v[0]= 4;
07/25 23:50, 14F
文章代碼(AID): #1AQniL4m (C_and_CPP)
文章代碼(AID): #1AQniL4m (C_and_CPP)