gpt4 book ai didi

C++:将 const 与 STL 迭代器一起使用

转载 作者:太空狗 更新时间:2023-10-29 23:27:05 26 4
gpt4 key购买 nike

来自 Effective C++ , 项目 3

/* case1 */ const std::vector<int>::iterator i  // i  acts like a T* const
/* case2 */ std::vector<int>::const_iterator ci // ci acts like a const T*

为了记住 const 是如何应用的,我曾经从 this article 中记住以下内容

Basically ‘const’ applies to whatever is on its immediate left (other than if there is nothing there in which case it applies to whatever is its immediate right).

当我第一次阅读书中的第 3 条时,我预计 case1 和 case2 是相反的。

我应该将这种情况视为异常(exception)情况吗?还是我缺少一些更深层次的理解?

最佳答案

该规则与宣传的一样有效。

const std::vector<int>::iterator i

紧靠右侧的项目是iterator:迭代器是不可变的。您不能将迭代器分配给指向 vector 中的不同项目,不能递增它,它总是指向它被初始化的项目。不过,您可以更改所指向的项目。

这很少是期望的行为,这就是存在 const_iterator typedef 的原因。

std::vector<int>::const_iterator ci

迭代器可以四处移动,但指向的项不能修改。这几乎总是您想要的——您想遍历一个 vector 但不能修改它的内容。

这里没有 const 关键字,因此您无法使用规则来计算它。对于这一点,您只需了解记录的 const_iterator 是做什么的。

关于C++:将 const 与 STL 迭代器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330356/

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