boost :: container :: string的内存是连续的吗?

时间:2014-05-30 15:23:58

标签: c++ boost

在c ++ 98中,std :: string(c++11 required it is contiguous)的内存可能不是连续的存储,boost :: container :: string怎么样?它是否保证内存是连续的?

如果它是连续的,它可以更自然地与遗留API一起使用。

boost::container::string str("some data\0");    
old_api(&str[0]);

不需要再将其复制到矢量

boost::container::string str("some data\0");
std::vector<char> buffer(str.begin(), str.end());

old_api(&str[0]);

谢谢

1 个答案:

答案 0 :(得分:3)

是的,boost::containter::string内存是连续的。

除非你使用一些非普通referenceconst_refeferencepointer类型的时髦分配器,否则任何boost::container::basic_string特化都会有连续的内存。

查看字符串的data()方法:它保证(无条件)常量时间,{data()+i == &operator[](i) i中每个0 size() {{1}} }]。