迭代器指针
时间: 2023-08-07 19:20:55 浏览: 82
迭代器和指针在很多情况下是可以互相转换的,因为迭代器实际上就是对指针的一种封装。对于指针,我们可以通过 `&` 取地址符获取指针,通过 `*` 解引用符获取指针所指向的值。对于迭代器,同样也可以使用这些符号来获取迭代器指向的值或地址。例如:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5};
std::vector<int>::iterator iter = vec.begin();
int* p = &vec[0];
std::cout << *iter << std::endl; // 输出 1
std::cout << *p << std::endl; // 输出 1
std::cout << &(*iter) << std::endl; // 输出元素的地址
std::cout << p << std::endl; // 输出元素的地址
return 0;
}
```
在上面的示例中,我们创建了一个 `std::vector` 对象 `vec`,并分别通过 `vec.begin()` 方法获取了 `vec` 的迭代器 `iter`,通过 `&vec[0]` 获取了 `vec` 的元素的指针 `p`。然后我们通过 `*iter` 和 `*p` 分别输出了它们指向的第一个元素的值 1;通过 `&(*iter)` 和 `p` 分别输出了它们指向的第一个元素的地址。
需要注意的是,在对迭代器进行解引用操作之前,需要先使用 `&` 取地址符将迭代器转换为指针,然后再用 `*` 解引用符获取指针所指向的值。
阅读全文