最近我有建议span<T>在我的代码中使用's,或者在网站上看到了一些使用span's - 应该是某种容器的答案.但是 - 我在C++标准库中找不到类似的东西.
那么这个神秘的是什么span<T>,以及为什么(或什么时候)使用它是一个好主意,如果它是非标准的?
我正在寻找一个函数来确定给定的指针是否指向给定的缓冲区.规格:
template <typename T>
bool points_into_buffer (T *p, T *buf, std::size_t len);
Run Code Online (Sandbox Code Playgroud)
如果有一些n,0 <= n && n < len为这p == buf + n,退货true.
否则,如果有一些n,0 <= n && n < len * sizeof(T)为它reinterpret_cast<char *>(p) == reinterpret_cast<char *>(buf) + n的行为是不确定的.
否则,返回false.
明显的实现看起来像
template <typename T>
bool points_into_buffer (T *p, T *buf, std::size_t len) {
return p >= buf && p < buf + len;
}
Run Code Online (Sandbox Code Playgroud)
但是在标准C++中有未定义的行为:指针的关系比较仅针对指向同一数组的指针定义. …