这是关于统计机器翻译系统的源码Moses .
在 Mosesdecoder project, 的 Factor
类中关键字 mutable
的奇怪用法:
class Factor {
__SOME_OTHER_CODE__
// FactorCollection writes here.
// This is mutable so the pointer can be changed to pool-backed memory.
mutable StringPiece m_string
size_t m_id;
__SOME_OTHER_CODE__
}
Factor.h
的完整文件是here .我知道 mutable
用于在 const 成员函数中修改成员变量,或者在 lambda 表达式中修改一些超出范围的变量。但是,我不明白 mutable
在这段代码中做了什么。
我很感激任何提示。谢谢。
最佳答案
您提供的信息太少,我们只能猜测。
也就是说,从评论来看,他们似乎有某种存储池,他们可能想将字符串的存储移动到存储池中。与 mutable
的大多数用途一样,它用于处理按位修改,该修改仍然使对象在逻辑上未被修改(即,它们更改指针,使其指向相同的数据,但位于不同的地址) .
关于c++ - Moses 源代码中的关键字 mutable 是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20605008/