string_view实现使用pointer,size而不是pointer,pointer有原因吗

NoS*_*tAl 8 c++ optimization c++17

您可能知道,C++17 字符串视图可以实现为一对 2 个指针(开始、结束)或指针(开始)和大小。我注意到在一个实现中它是用指针​​、大小来实现的。

这样做有充分的理由吗?或者这只是一个抛硬币的决定?

我想知道,因为向量实现通常有 3 个指针,而不是指针、大小、大小。

我唯一合理的解释是 .size() 可能比 .end() 被调用更频繁,因此我们对此进行优化(end 需要加法,但 size 无需计算)。