gpt4 book ai didi

c++ - std::string 是否需要将其字符存储在连续的内存中?

转载 作者:IT老高 更新时间:2023-10-28 21:38:49 30 4
gpt4 key购买 nike

我知道在 C++98 中,std::basic_string<>也不是 std::vector<>需要使用连续存储。这被视为对 std::vector<> 的疏忽。一旦被指出,并且,如果我没记错的话,用 C++03 修复了。

似乎记得读过需要std::basic_string<>的讨论在 C++11 仍被称为 C++0x 时使用连续存储,但我当时没有密切关注讨论,并且在工作中仍然仅限于 C++03,所以我不确定结果如何它。

std::basic_string<> 也是如此需要使用连续存储? (如果是,那么哪个版本的标准首先需要它?)

如果您想知道:如果您有代码传递 &str[0] 的结果,这很重要到一个函数,该函数期望写入一 block 连续的内存。 (我知道 str.data() ,但由于明显的原因旧代码不使用它。)

最佳答案

C++11 standard , basic_string 21.4.1.5,

The char-like objects in a basic_string object shall be stored contiguously. That is, for any basic_string object s, the identity &*(s.begin() + n) == &*s.begin() + n shall hold for all values of n such that 0 <= n < s.size().

关于c++ - std::string 是否需要将其字符存储在连续的内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124479/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com