Iterator在vector :: begin()中返回

W.J*_*Joe 0 c++ iterator vector

我不太了解vector::begin()实际返回的内容.

Cplusplus.com告诉我vector::begin()返回向量的迭代器,这意味着,vector<int> v;它将给出0.

但是,当我在Visual Studio上调试时,监视表显示了第一个元素的值v.此外,"类型"列表示它是a std::_Vector_iterator.

结果,究竟是什么输出vector::begin()

Rei*_*ica 5

std::vector::begin返回一个迭代器.迭代器是指针的泛化 - 它是一种可用于访问容器元素的类型.每个容器都提供自己的迭代器类型.如何表示迭代器是一个实现细节,作为程序员,您应该只关心它们的接口(并保证它们有关稳定性,有效性等等.请参阅适当的文档以获取更多信息).

不同类型的迭代器支持不同的操作:一些只能递增(只能向前移动),一些也可以递减(向后移动); 有些人需要一次移动一步,有些人可以一次移动多个元素; 等等

提供的迭代器std::vector是随机访问和连续,因此它们的功能几乎与指针完全相同.

对于空std::vector,调用begin()将为您提供与调用返回的完全相同的迭代器end().end()总是返回一个特殊的,过去的结束迭代器.迭代器不是可解除引用的(它不指向任何元素),它只是作为容器结束的指示符.