gpt4 book ai didi

c++ - 如何修改/更新由 const 引用传递的对象的内部状态

转载 作者:行者123 更新时间:2023-11-30 02:51:51 25 4
gpt4 key购买 nike

通过 const 引用传递一个对象意味着我们不能修改它的任何成员。但是假设对象包含一个 vector<string>成员。我们如何编写 const 方法来读取 vector<string> 的内容?成员假设 vector<string>::iterator还需要成员并且必须在每次读取后更新以指向 vector 中的下一个元素?

这可能吗,或者在这种情况下还有其他方法吗?也就是说,不要修改由 const 引用对象传递的内容,但该对象应该能够更新其内部状态(即要读取的 vector 中的下一个元素)。

最佳答案

听起来您正在寻找关键字mutable。可变成员变量在 const 成员方法中是可修改的。你可以阅读它here .一个例子:

class A
{
std::vector< int > v_;
mutable std::vector< int >::const_iterator current_;

public:
int get() const // note the const
{
assert( !v_.empty() );
if( current_ == v_.end() ) current_ = v_.begin();
return *current_++;
}
};

请注意,您仍然需要 const_iterator,因为 vector 本身是 const,因此 v_.begin() 不会为您提供普通的迭代器。您可以通过将 vector 本身也标记为可变来解决这个问题,然后您可以使用迭代器

这是一个完整的 live example .

关于c++ - 如何修改/更新由 const 引用传递的对象的内部状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com