contiguous_iterator
特征,我可以(?)在容器的迭代器上使用它来确定它是否具有连续存储。
但是 - 如果我只能依赖 C++11 怎么办?我能确定一个类型(假设它是一个容器)是否具有连续存储的最接近的方法是什么?我意识到答案可能并不完全可靠,或者可能无法涵盖所有情况,但我想为此使用一些“尽力而为”的函数。
使其成为容器或范围的特征。
数组和标准数组是连续的。
向量与标准字符串一样是连续的。
字符串视图和标准跨度也是连续的。
如果您允许轻松扩展,只需列出所有连续的容器即可。
或者,如果你想偷懒并且可以接受启发式,数组,加上带有
T* data()
和 std::size_t size() const
的对象,其中 *x.begin()
是 T&
。
但实际上我列出的类型,再加上代码库中最多六种自定义类型,就可以了。明确列出它们。