Ang*_*ber 4 c++ vector standard-library
帮助vector说front()
返回对向量容器中第一个元素的引用.与
vector::begin将一个迭代器返回到同一元素的member不同,这个>函数返回一个直接引用.
关于矢量的帮助说 begin()
返回引用向量容器中第一个元素的迭代器.请注意,与member
vector::front(返回对第一个元素的引用)不同,> this函数返回一个随机访问迭代器.
这段代码输出:
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;
Run Code Online (Sandbox Code Playgroud)
地址vec.front() 00401F90
的地址vec.begin() 0030F494
我不明白"直接参考"是什么意思?在begin()不是一个random access iterator只是一个pointer?
有人可以指出区别吗?
在begin()的情况下,是不是随机访问迭代器只是一个指针?
不,迭代器有一些指针语义,但它实际上是一个类.
即使它是,那应该回答这个问题.这就像问为什么指针的地址与它指向的对象的地址不一样.
如果取消引用迭代器,你将获得相同的值,这将为您提供第一个元素:
&(*vec.begin())
Run Code Online (Sandbox Code Playgroud)
因为
*vec.begin() == vec.front()
Run Code Online (Sandbox Code Playgroud)