begin()
和data()
都返回指向第一个元素的迭代器。但是,data()
的定义说它返回一个直接指向内部使用的存储所拥有元素的向量的内存数组的指针。我也可以使用它们来访问任何元素。那么它们两者之间有什么不同?请考虑以下示例,
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
v.reserve(5);
for (int i = 1; i <= 5; i ++) v.push_back(i);
auto it = v.begin();
auto pos = v.data();
std::cout << "First element : " << *it << std::endl;
std::cout << "First element : " << *pos << std::endl;
std::cout << "Third element : " << it[2] << std::endl;
std::cout << "Third element : " << pos[2] << std::endl;
}
std::vector<T>::begin
与std::vector<T>::data
之间的区别。 - Some programmer dudebegin()
和data()
都返回指向第一个元素的迭代器,只是不同类型的迭代器。 - Remy Lebeau