const_string作为map键;制作缓冲区副本?

时间:2012-02-26 13:04:53

标签: c++ const-string

const_string的重点是避免在字符串不应该改变时制作一个不必要的副本。

但是,有些情况下你不能保证const char * source的生命周期比const_string更长,例如,如果使用const_string作为map的键,如果某些const char *被回收,你将会在你面前进行调试时会有非常有趣的分段错误。

有没有办法告诉const_string,嘿朋友,请保留这个const char的私人副本*?或者std :: string?

我会参考a previous question,以便了解我的目标。

1 个答案:

答案 0 :(得分:1)

什么不起作用?通过查看代码(文档最好是平庸),我可以看到const_string(charp)(而const_string(boost::cref(charp))charp char*相对应const_string(Iterator begin, Iterator end)应该复制另一种可能性是使用const_string_storage构造函数。(参见storage.hpp中的std::basic_string的双参数构造函数,第153行)

他们甚至在他们的测试中使用临时const_string来初始化{{1}}(说实话,我还没有运行它),所以 应该正常工作。