以下代码段出现错误;
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <iostream>
using namespace std;
struct tuple {
int x;
int y;
};
int main() {
//srand(time(NULL));
vector<tuple> locations;
int dimentions = 20;
double filledness = 0.65;
while (locations.size() < dimentions * dimentions * filledness) {
tuple point;
point.x = rand() % dimentions;
point.y = rand() % dimentions;
locations.push_back(point);
}
int count = locations.size();
tuple start, end;
start = locations[rand() % count];
end = locations[rand() % count];
cout << count << endl;
for (int i = 0; i < locations.size(); i++) {
cout << locations[i].x << " " << locations[i].y << endl;
}
cout << start.x << start.y << endl;
cout << end.x << end.y;
return 0;
}
向量初始化在我的主体和结构概述中。我显然对向量一无所知。我试图使该结构成为一个类,并用元组*的向量替换元组的向量。
有人可以解释为什么不能以这种方式使用向量
如果您不告诉我如何直接解决错误,我希望您能这样做。
error: template argument 1 is invalid
vector<tuple> locations;
答案 0 :(得分:1)
您的错误原因是此结构:
struct tuple {
int x;
int y;
};
1)当标准库中存在std::tuple时,您调用了类型tuple
,并且
2)您使用了using namespace std;
,因此代码中对tuple
的任何提及都可能与std::tuple
发生冲突。
如果将结构重命名为my_tuple
或类似名称,则应该纠正您现在遇到的错误。