vector
的帮助文档中对front()
函数的解释如下:
返回指向容器第一个元素的引用。 与成员函数
vector::begin
返回指向相同元素的迭代器不同,该函数直接返回引用。
vector
的帮助文档中对begin()
函数的解释如下:
返回指向容器第一个元素的迭代器。 请注意,与成员函数
vector::front
返回第一个元素的引用不同,该函数返回一个随机访问迭代器。
以下是代码输出:
char arr[] = { 'A', 'B', 'C' };
vector<char> vec(arr, arr+sizeof(arr));
cout << "address of vec.front() " << (void*)&vec.front() << endl;
cout << "address of vec.begin() " << (void*)&vec.begin() << endl;
vec.front() 00401F90
的地址是什么?vec.begin() 0030F494
的地址是什么?
我不理解“直接引用”是什么意思?在begin()
的情况下,一个随机访问迭代器
不就是一个指针
吗?
请问有人能指出这两者之间的区别吗?
front()
返回元素(例如,'A'
),而begin()
返回一个指向第一个元素的迭代器(因此*begin() == 'A'
)。 - chris&vec.begin()
不是有效的代码。您的编译器将其作为扩展接受。 - Luc Danton