-> 运算符的优先级比 后递增 高,为什么还先执行iter++?前递增的优先级也没->高,甚至比后递增还低,为什么不先执行++iter ?
时间: 2024-05-25 16:12:49 浏览: 19
运算符的优先级只决定了表达式中各个运算符的执行顺序,但不决定操作数的求值顺序。在表达式 `iter->` 中,首先要求得 `iter` 的值,然后再执行箭头运算符 `->`,因此 `iter++` 会先执行,然后再执行箭头运算符 `->`。
另外,对于前缀递增运算符和后缀递增运算符的优先级,它们的优先级相同,但是它们的执行顺序是不同的。前缀递增运算符会先执行递增操作,然后将新值作为表达式的值,而后缀递增运算符会先将表达式的值保存下来,然后再执行递增操作。因此,在表达式中使用前缀递增运算符和后缀递增运算符时,根据具体的需求选择合适的运算符即可。
相关问题
QMap使用迭代器iter访问为什么写作iter.key() ,而不是iter->key()
QMap使用迭代器iter访问时,可以使用iter.key()或者iter.value()来获取键值对中的键或值。而iter->key()和iter->value()的写法是针对STL的迭代器的,QMap的迭代器并不是STL迭代器,因此不支持箭头操作符(->)。所以在QMap中,应该使用iter.key()或iter.value()来访问键值对中的键或值。
yArray = iter->second
这个语句将 `iter` 迭代器指向的元素的值赋给 `yArray` 变量。
假设 `iter` 是一个指向 `std::map` 容器中某个元素的迭代器,那么 `iter->second` 将返回该元素的值,这里假设该元素的值为 `vector<int>` 类型。然后通过赋值运算符将该元素的值赋给 `yArray` 变量,因此 `yArray` 将包含与该元素的值相同的元素。
需要注意的是,`yArray` 必须是 `vector<int>` 类型的变量才能接收 `iter->second` 的值。如果 `yArray` 的类型与 `iter->second` 的类型不兼容,则会出现编译错误。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)