c++ - Moses 源代码中的关键字 mutable 是做什么用的?

标签 c++ c++11 smt moses

这是关于统计机器翻译系统的源码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/

相关文章:

c++ - 正常 block 后检测到堆损坏(#174)

c++ - 将STL算法传递给另一个函数

c - 使用 z3 api 解决 LRA 运行速度比在终端中使用 z3 慢

java - Z3 将 FuncInterp 设为 Null

c++ - Microsoft Visual C++ 2010 和 Arduino UNO 通过 USB 之间的串行通信

c++ - 从剪辑计算纹理坐标

C++ 从模板参数创建元组 vector

C++ 模板类继承自身

c++ - C++0x 中的闭包和嵌套 lambda

z3 - 精益是否增强了证据的可调查性?