呜呜呜,
目前我正在学习 c++ 并且有一个有趣的效果,我无法向自己解释。
为什么 *iterator++;
也适用于这种情况?
从我的角度来看,它应该增加指针的值。这是否意味着从 std::begin(feld)
返回的对象的 ++
运算符被覆盖以处理它以使其舒适?我很困惑
void CArrayExamples::beginAndEndMethod()
{
int feld[] = { 0,1,2,3,4,5,6,7,8,9 };
int* iterator = std::begin(feld);
int* ending = std::end(feld);
while (iterator != ending)
{
std::cout << "iterator:" << iterator << std::endl;
std::cout << "*iterator:" << *iterator << std::endl;
std::cout << "ending:" << ending << std::endl;
std::cout << "*ending:" << *ending << std::endl;
std::cout << "-----------------------------------------------" << std::endl;
//why does this both work? :D
//*iterator++;
iterator++;
//TODO: Ask somebody!
}
}
最佳答案
自增运算符++
的优先级高于间接运算符*
,所以*iterator++
被解释为*(iterator++ )
,即递增迭代器/指针并返回旧值指向的值。
不过,您的代码不使用返回值。
如果你想增加值,而不是迭代器/指针,写(*iterator)++
。
关于c++ - 为什么指针或值的递增会导致循环中的相同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63544478/