【发布时间】:2014-12-05 02:03:39
【问题描述】:
在 c++ 中迭代向量时,我注意到标准库中有一个 begin() 函数,还有一个 begin() 作为 vector 类的成员函数。如果有的话,两者之间有什么区别,应该使用哪个而不是另一个?
例子:
vector<int> numbers;
//Code to put values in my vector
for (vector<int>::iterator i = numbers.begin(); i < numbers.end(); i++)
cout << *i << '\n';
对比:
vector<int> numbers;
//Code to put values in my vector
for (vector<int>::iterator i = std::begin(numbers); i < std::end(numbers); i++)
cout << *i << '\n';
【问题讨论】:
-
对于容器,它们是相同的。但是
std::begin也适用于内置数组,在模板函数中非常有用。 -
OT,但
++i可能比i++更高效,因为后者按值返回迭代器