递增:++ 使用方法为 i++;或 ++i; 等价于 i = i + 1;
递减:-- 使用方法为 i--;或 --i; 等价于 i = i - 1;
前加和后加的区别在于是否是叠加后的值参与整体运算
int i =0,j; j = ++i; // j = 1, i = 1; 前置版本的到底增之后的值 j = i++; // j = 1, i = 2; 后置版本得到递增之前的值
前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。
如非必要尽量使用前置版本,因为后置版本会产生一个临时的变量。
auto pbeg = v.begin(); // 输出元素之至遇到第一个负数为止 while(pbeg !=v.end() && *beg >= 0) cout << *pbeg++ << endl; // 输出当前值并将pbeg向前移动一个元素
上面的这种写法是一种简介的写法,
它的意义是在一条语句中,使用迭代器的值,并将迭代器向后移动一位。
参与运算的对象的求值顺序在C++标准中没有明确规定,所以不要将臆测的运算顺序带入代码中,这样的结果将是不可预测的
for(auto it=s.begin();it!=s.end()&& !isspace(*it);++it) *it=toupper(*it); // 以下是错误的循环示范 // 产生问题的原因是赋值的左右两侧都用到了beg对象,并且两册都改变了beg的值 while(beg!=s.end() && !isspace(*beg)) *beg = toupper(*beg++); // 该语句的结果是未定义的 *beg= toupper(*beg); // 先求左侧的值 *(beg +1) = toupper(*beg); // 先求右侧的值