在 C++20 之前如何最好地模拟连续存储检查?

问题描述 投票:0回答:1

C++20 添加了

contiguous_iterator
特征,我可以(?)在容器的迭代器上使用它来确定它是否具有连续存储。

但是 - 如果我只能依赖 C++11 怎么办?我能确定一个类型(假设它是一个容器)是否具有连续存储的最接近的方法是什么?我意识到答案可能并不完全可靠,或者可能无法涵盖所有情况,但我想为此使用一些“尽力而为”的函数。

c++ c++11 iterator containers contiguous
1个回答
0
投票

使其成为容器或范围的特征。

数组和标准数组是连续的。

向量与标准字符串一样是连续的。

字符串视图和标准跨度也是连续的。

如果您允许轻松扩展,只需列出所有连续的容器即可。

或者,如果你想偷懒并且可以接受启发式,数组,加上带有

T* data()
std::size_t size() const
的对象,其中
*x.begin()
T&

但实际上我列出的类型,再加上代码库中最多六种自定义类型,就可以了。明确列出它们。

© www.soinside.com 2019 - 2024. All rights reserved.