我读了STL,但是指针的使用让我感到困惑。
destroy(&*first);
首先是一个指针,然后"&*first"等于first,为什么不能直接使用first?
destroy声明如下:
void destroy(T* pointer)
T是一个模板参数。
first
,它们重载了operator*
以返回容器所指向元素的引用,然后使用operator&
来获取迭代器指向变量的地址。您可以在这里了解更多关于迭代器的知识。first
是一个指针而不是用户定义的迭代器,那么您可以直接使用first
。请注意,指针也可以是迭代器(具体来说,是RandomAccessIterator
)。&*
组合不起作用,正如您所指出的那样。但是,如果参数是具有重载一元*
运算符的类类型,则&*
不再是无操作。
&*
模式的经典用法是将“通用”指针转换为原始指针。例如,如果it
是与向量元素相关联的迭代器,则&*it
将为您提供该向量元素的普通原始指针。