C++基础::关于区间端点的问题

来源:互联网 发布:串口助手软件下载 编辑:程序博客网 时间:2024/06/05 07:06

STL的环境中,我们知道区间都是左闭右开的区间。这一点很重要,然而仅仅知道这些还是不够的。

当自加运算和循环结合,要特别小心:

比如返回容器中某一元素所在的索引,

vector<string> values{"hello", "world", "inside", "zhang"};vector<string>::const_iterator pos = values.begin();
while (*pos != "inside")    ++pos;size_t idx = pos - values.begin();      // 这时idx == 2

可是如果想试图更装逼的使用自加机制,你也许会这样写:

while (*pos++ != "inside");size_t idx = pos - values.begin();                  // 这时idx == 3            // 稍加思考,比较容易理解,无论是`++i`还是`i++`            // 都是两个动作,            // 比如本例,当*pos == "inside"时,pos还要进行自加
0 0