【发布时间】:2012-01-08 08:06:26
【问题描述】:
typedef struct { double x, y; } vec;
typedef struct { int n; vec* v; } polygon_t, *polygon;
#define BIN_V(op, xx, yy) vec v##op(vec a, vec b) { \
vec c; c.x = xx; c.y = yy; return c; }
#define BIN_S(op, r) double v##op(vec a, vec b) { return r; }
BIN_V(sub, a.x - b.x, a.y - b.y);
BIN_V(add, a.x + b.x, a.y + b.y);
BIN_S(dot, a.x * b.x + a.y * b.y);
BIN_S(cross, a.x * b.y - a.y * b.x);
vec testPoints[] = {
{1, 1},
{3, 3},
{3, 5},
{5, 2},
{6, 3},
{7, 4}
};
结构数组最后的作用是什么?我不太明白{1, 1}是怎么变成vec的。
如果我想要一个vector<vec> allPoints,我怎样才能将一个 vec 推入这个向量?这不起作用allPoints.push_back({1, 2});,以及allPoints.push_back(new vec(1, 2));
【问题讨论】:
-
c++,我觉得是一样的,只是c没有向量。
-
不,C 和 C++ 不一样。请注意,在 C++ 中您不需要
typedef struct。 -
我的意思是,这段代码最初是来自C,我只是因为我想使用Vector而改为C++。它可以在没有向量推送的情况下在 C++ 中编译
-
但是感谢您指出这一点。