c++ - 检查指针是否指向数组

标签 c++ arrays pointers comparison

我能否检查给定的指针是否指向数组中的对象,由其边界指定?

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/

相关文章:

c++ - 在 C++ 中设置本地环境变量

c++ - 运行时检查失败 #2 - 变量 'db' 周围的堆栈已损坏。 c++ (帮助)

ios - 通过不包含字符串来过滤数组(swift 2)

c - memcmp 上的段错误

c - C 中 SLL 的 Delete(node ) 的正确语法是什么?

c++ - 使用 Xlib 更改绘图颜色

c++ - 通过引用传递带有枚举类的枚举

c - 某些单词/C 的加密错误

java - Java 中的单独链接

c - 指向字符数组指针的指针