【发布时间】:2019-08-30 22:14:44
【问题描述】:
我正在处理一个竞赛问题,我必须按以下方式初始化一个向量:
vector<pair<int,int>> moves({{i,j}, {i,-j}, {-i,j}, {-i,-j},
{j,i}, {j,-i}, {-j,i}, {-j,-i}});
虽然我知道这不是最好的方法,并且我知道有许多不同的方法可以轻松完成此操作,但我想知道 C++ 宏是否有一种方法可以让我简单地复制粘贴前四个元素上述向量的实现相同的方式如下:
vector<pair<int,int>> moves({{i,j}, {i,-j}, {-i,j}, {-i,-j},
#define i j
#define j i
{i,j}, {i,-j}, {-i,j}, {-i,-j}
#undef i
#undef j
});
由于变量的循环引用,上面的代码显然不起作用。
附注: 尽管 Matteo Italia 的回答在上述情况下是绝对正确的,但我更想知道在 C++ 中是否可以使用宏交换变量的出现,以及如何,如果可能的话?
【问题讨论】:
-
笛卡尔积的问题不用任何宏也能很好的解决:stackoverflow.com/questions/29451291/cartesian-product-in-c
-
@Yksisarvinen 正如我在问题中所写,我知道这一点。