作者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