【发布时间】:2014-10-13 03:28:26
【问题描述】:
有很多替代方法来寻址向量的元素。
我可以像这样使用指针:
vector<int> v = {10, 11, 12};
int *p = &v[0];
cout << *p; //Outputs "10"
我也可以这样使用指针:
vector<int> v = {10, 11, 12};
vector<int>::pointer p = v.data();
cout << *p; //Outputs "10"
我也可以使用迭代器类型:
vector<int> v = {10, 11, 12};
vector<int>::iterator i = v.begin();
cout << *i; //Outputs "10"
我在这里遗漏了什么显着差异吗?
【问题讨论】:
-
"addressing elements of a vector",为什么不用最简单的
v[0]。 -
除非你需要,否则我会推荐处理向量元素的常用方法
-
@BSH 安全。如果向量为空怎么办?你还有
vector::front -
中间一个不能通过检查实现来检查正确性(也就是有任何元素),其他两个可以。所有发布模式的实现都未选中。
-
@MFH:迭代器一直是unchecked in Release mode since VS2010
标签: c++ pointers vector iterator