我能否检查给定的指针是否指向数组中的对象,由其边界指定?
template <typename T>
bool points_within_array(T* p, T* begin, T* end)
{
return begin <= p && p < end;
}
或者如果 p
指向数组边界之外,指针比较会调用未定义的行为吗?在这种情况下,我该如何解决问题?它适用于 void 指针吗?还是无法解决?
最佳答案
虽然比较只对数组中的指针和“结束后的一个”有效,但使用以指针为键的集合或映射是有效的,它使用std::less<T*>
早在 1996 年,comp.std.c++ 就对这种方式进行了一次大讨论。
关于c++ - 检查指针是否指向数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657976/