我想知道是否可以将一对[int,int]声明为宏。
所以我想知道我是否可以像
那样抽象地表达它#define X pair<int,int>::first
#define Y pair<int,int>::second
int main()
{
int a[10][10];
pair<int,int> arr;
int sum=0;
...
for(auto p: arr)
sum += a[Y][X] // a[p.second][p.first]
}
但这是错误的。我可以声明一个我可以这样表达的宏吗?
答案 0 :(得分:6)
我想定义“ pair [int,int] :: first”,如#define X对[int,int] :: first
抵制诱惑。
/// Right sum += a[p.Y][p.X]; /// Wrong sum += a[Y][X] //but i want to do this
好像您想这样做:
int Y = p.second;
int X = p.first;
这样,您可以执行以下操作:
sum += a[Y][X];
更好的是,似乎一门课程比一对更适合您:
struct Coordinates { // choose an appropriate name
int x;
int y;
};
Coordinates c {1, 2};
int Y = p.y; // not necessary, but just to get the exact syntax you want
int X = p.x;
sum += a[Y][X];