对迭代器解引用时是否有效?
Is this valid when dereferencing an iterator
for (auto iter = dlQueue.cbegin(); iter != dlQueue.cend(); ++iter)
{
// reference to the current element in the container
if (*iter.id == listid)
{
*iter.stall = newstall & 0xFFFFFFF;
}
}
当我对iter所引用的对象解引用时,我将能够检查对象的状态;即id。还是返回给我一个迭代器。
我不能去:
iter -> id
不,你引用的代码是错误的。
.
优先级高于一元*
。要访问由iter
引用的元素的成员,您应该写(*iter).id
或iter->id
,而不是*iter.id
。
你试过了吗?如果你有一个编译错误,请告诉我们是什么。另外,看看dlQueue
的类型也会很有帮助。
(*iter).id
和iter->id
都应该导致对id的const引用(假设dlQueue
持有具有可访问成员id
的对象)。不能给const引用赋值,但这与*iter.
或iter->
的选择无关。
如果你需要修改你正在迭代的项目,使用begin
代替cbegin
等。
for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
我修复了你代码中明显的错误:
for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter) {
// if the id matches:
if (iter->id == listid) {
// assign to stall a bitmasked version of newstall:
iter->stall = newstall & 0xFFFFFFF;
}
}
有帮助吗?
相关文章:
- 如果变量名称不跟在 char* 后面,const char* 是否有效?
- 钳制迭代器是否有效
- 检查由括号、方括号和大括号组成的一组方括号是否有效?
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 模板签名解析为 void(void) 被 GCC 拒绝;这是否有效C++?
- 我如何知道作为参数的size_t在函数中是否有效?
- 我的运算符重载是否有效<<(流插入)左操作数不是 ostream
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 此递归模板类型定义是否有效C++?
- 将 C 函数转换为 C++ 以检查数字是否有效
- 函数参数的名称与调用函数时使用的变量相同是否有效?
- 如何检查输入是否有效?
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- 在函数中按值传递 unordered_map/unordered_set 是否有效? C++
- 如何检查isupper(cstr)是否有效?
- 将 std::transform 与 std::back_inserter 一起使用是否有效?
- 只需要知道我在c ++中打印模式的方式是否有效,或者有另一种方法可以有效地做到这一点
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- 创建加密安全密码.并验证它是否有效