结构传染媒介传染媒介

时间:2017-12-18 10:42:08

标签: c++ vector struct

我正试图制作一个“表格”来存储游戏的统计数据或技能值 我最初尝试使用带有结构的多维数组,但我希望能够随时添加数据行。我做了一些研究:link,发现载体可能就是我所需要的 我现在正试图制作结构矢量的矢量,但无济于事。我对错误不满意D:
这是我的代码:

#include <iostream>  
#include <vector>
using namespace std;

int main()
{
    struct Skills
    {
        string type;
        int value;
    };
    vector< vector<Skills> > statTable;
    statTable[0][0].type = "test";
    cout << statTable[0][0].type << endl;
    return 0;
}

以下是错误:https://i.imgur.com/lNqbgyW.png

提前致谢!

2 个答案:

答案 0 :(得分:1)

您似乎正在使用旧的编译器。在这种情况下,将main结构声明放置在例如全局空间中。

struct Skills
{
    string type;
    int value;
};

int main()
{
    //...

此声明之后

vector< vector<Skills> > statTable;

向量statTable为空。所以你可能不会使用下标运算符。

而是声明像

这样的向量
vector< vector<Skills> > statTable(1, std::vector<Skills>( 1 ) );

之后你可以写

statTable[0][0].type = "test";

以下代码片段也可以实现同样的效果

vector< vector<Skills> > statTable;
statTable.push_back(vector<Skills>());
statTable[0].push_back(Skills());

statTable[0][0].type = "test";
cout << statTable[0][0].type << endl;

答案 1 :(得分:0)

我编译了这段代码,但它没有给我任何错误,它编译成功但是给了我分段错误,因为你必须正确填写数据,所以这是我的解决方案

#include <bits/stdc++.h>
using namespace std;
int main()
{
    struct Skills
    {
        string type;
        int value;
    };
    vector< vector<Skills> > statTable;
    vector<Skills> v;
    Skills x;
    x.type = "test";
    v.push_back(x);
    statTable.push_back(v);
    cout << statTable[0][0].type << endl;
    return 0;
}

希望这有帮助,我使用C ++ 98 btw。