作者fgets (安全不會當)
看板C_and_CPP
標題[問題] 有關STL,這樣的寫法?
時間Sat Jul 25 22:47:48 2009
請問各位
我在某處看到這樣的CODE
*lower_bound(v.begin(), v.end(), n) = n;
v是vector,為什麼函式是寫在左邊
我第一次看到
先謝謝各位的解答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.143.215
1F:推 zlw:因為function call運算子,也就是lower_bound的() 運算順序 07/25 22:52
2F:→ zlw:比 = 運算子高,所以只要先執行該函數後傳回 l-value (左值) 07/25 22:53
3F:→ zlw:就可以寫在 = 的左邊 07/25 22:53
4F:→ fgets:不好意思,我想再請問*又是要做什麼呢? 07/25 22:56
5F:→ fgets:然後我也不太懂這樣寫的用處= = 07/25 22:57
6F:推 zlw:vector的iterator做完dereference後,相當於 v[0] 存取第0個 07/25 22:58
7F:→ zlw:元素,當然0只是舉例。 07/25 22:59
8F:→ fgets:很謝謝你喔! 我需要咀嚼一下。 07/25 23:04
9F:推 zlw:舉例,整個vector只有兩個值 v[0]=3 跟 v[1]=4; 且 n =4 07/25 23:10
10F:→ zlw:執行 *lower_bound(v.begin(), v.end(), n) 代表尋找整個v中 07/25 23:11
11F:→ zlw:數值至少有4的所在。故相當於 v[1]。整個簡化完,就是 v[1]=4; 07/25 23:12
12F:→ zlw:這是沒意義的動作,因為數值沒有被改變 07/25 23:12
13F:→ fgets:我明白了,感謝!! 07/25 23:14
14F:推 Ebergies:v[0]= 5; v[1]= 6; 時 會使 v[0]= 4; 07/25 23:50