C++ C++;可变关键字如何影响容器的性能?
我想知道可变内容如何影响容器(映射、向量、列表等等)。另外,我必须记住什么?C++ C++;可变关键字如何影响容器的性能?,c++,mutable,C++,Mutable,我想知道可变内容如何影响容器(映射、向量、列表等等)。另外,我必须记住什么?可变的,就像常量,只是编译时的事情。它只允许您在常量上下文中修改该变量。在运行时,您是否声明了容器mutable没有区别 class Foo{ mutable int i; public: void foo() const{ // constant context, but you can modify `i` i = 5; } }; 一般来说,人们会写一些关于可变关键字的书,也许你可以缩
可变的
,就像常量
,只是编译时的事情。它只允许您在常量上下文中修改该变量。在运行时,您是否声明了容器mutable
没有区别
class Foo{
mutable int i;
public:
void foo() const{
// constant context, but you can modify `i`
i = 5;
}
};
一般来说,人们会写一些关于可变关键字的书,也许你可以缩小它的范围,用一些代码来说明在你的特定情况下这是怎么回事。它也可以作为优化器的提示。它确实影响优化器的功能。有(至少在理论上)您可以在不可变对象上进行一些优化(从最广泛的意义上讲),如果将这些优化应用于具有
可变
成员的const
对象,可能会破坏代码。然而,我对编译器的实现还不够熟悉,无法判断它们的实现程度。然而,这个问题正是出于这个原因。我的理解是,在一般情况下,const(以及它的反面,mutable)不能用于启用额外的优化,因为编译器必须考虑到这样一个事实,即可能有人在某个地方抛弃了const。@ildjam你是对的,我忘记了为什么const通常不能帮助编译器优化的原因。它没有帮助的实际原因如下: