boost::flyweight< std::string >
看起来正是您需要的。
typedef std::hash_set< std::string > StringCache;
,那么你将得到一个不太花哨的版本。C++标准库本身与大多数其他语言相比非常基础。 - Ylisarboost::flyweight
要求对象是不可变的;而 std::string
并非如此。像 []
这样的操作可能会导致问题(或者不会,这取决于对象之后的使用方式)。 - James Kanze[]
不会引起问题,因为boost::flyweight< T >只会暴露出const T&。 - Ylisar