我正在阅读有关如何编写 destroy() 的示例代码:
template<class T>
inline void destory(T* pointer)
{
pointer->~T();
}
template <class FowardIterator>
inline void
_desstroy_aux(ForwardIterator first,ForwardIterator last,_false_type)
{
for(;first<last;++first)
destory(&*first);
}
我不太确定为什么使用
&*第一
我想销毁算法通常是在假设迭代器指向分配的内存的情况下使用的。那么我们为什么不直接使用 destory(first) 呢?也许是因为first可能指向没有单独分配的元素?
提前致谢。
C++中&*ptr的使用用于获取指向迭代器所指向元素的指针。在提供的代码的上下文中, &*first 在负责销毁对象(称为 _destroy_aux)的函数中使用。
在这种情况下使用 &*ptr 的主要原因是获取指向迭代器首先指向的对象的指针。这是必要的,因为销毁函数(或销毁,取决于代码中可能的拼写错误)可能需要指向要销毁的对象的指针。
* 运算符首先获取迭代器指向的对象,然后 & 运算符获取该对象的内存地址,从而提供指向该对象本身的指针。该内存地址可能需要作为参数传递给 destroy(或 destory)函数,以执行该迭代器所指向的对象的销毁。