gpt4 book ai didi

c++ - vec [i] [j]转换为*(vec + i + j)吗?

转载 作者:行者123 更新时间:2023-12-01 15:04:11 25 4
gpt4 key购买 nike

例如,我们可以通过两种方式引用一维数组的元素:
vec[i]*(vec + i)vec[i][j]如何转换为二维数组?

最佳答案

逻辑方法-如果a[x]*(a + x)的语法糖,那么让我们展开整个表达式:

vec[i][j]
(*(vec + i))[j]
*((*(vec + i)) + j)

剥去一对括号,我们得到:
*(*(vec + i) + j)

因此 vec[i][j]不等于 *(vec + i + j),而是 *(*(vec + i) + j)。由于有两个运算符(operator)应用程序,因此存在两个取消引用。第一个表达式(因为只有一个取消引用)转换为 vec[i + j]

一点点注意:在使用vector时,这两个过程将编译为同一程序集(这意味着它们是等效的;为了便于阅读/简化,我使用:: iterator而不是普通vector):
char fn(vector<vector<char>::iterator>::iterator vec, char i, char j) {
return vec[i][j];
}

char fn2(vector<vector<char>::iterator>::iterator vec, char i, char j) {
return *(*(vec + i) + j);
}

关于c++ - vec [i] [j]转换为*(vec + i + j)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565526/

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