我想知道为什么这段代码合法:
std::vector<int>::iterator & foo(std::vector<int>::iterator & iter) {
return ++iter;
}
int main() {
std::vector<int> v = { 1,2,3,4 };
std::cout << *foo(v.begin()) << std::endl;
}
该函数接受对迭代器的非const 引用,但我没有初始化任何持有该迭代器的变量,我只是将v.begin()的结果作为引用传递,但是函数能够增加其值,返回它,并使用结果打印向量的元素:
迭代器存储在哪里? 我还在学习C ++(大约3周前开始),所以我有点困惑,但我有一个&#34;想法&#34;:
是否在调用之前初始化了一个临时变量,比如将文字传递给接受 const 引用的函数(如下所示)?
std::vector<int>::iterator & foo(std::vector<int>::iterator & iter) {
return ++iter;
}
int main() {
std::vector<int> v = { 1,2,3,4 };
std::vector<int>::iterator tempIter = v.begin();
std::cout << *foo(tempIter) << std::endl;
}
谢谢!