向量元组结构

时间:2019-01-27 01:48:11

标签: c++ templates vector

以下代码段出现错误;


#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;

1 个答案:

答案 0 :(得分:1)

您的错误原因是此结构:

struct tuple {
    int x;
    int y;
};

1)当标准库中存在std::tuple时,您调用了类型tuple,并且

2)您使用了using namespace std;,因此代码中对tuple的任何提及都可能与std::tuple发生冲突。

如果将结构重命名为my_tuple或类似名称,则应该纠正您现在遇到的错误。