2017-12-18 16 views
-1

私は、ゲームの統計値または技能値を格納するための「テーブル」を作成しようとしています。
私はもともと構造体で多次元配列を使用しようとしましたが、いつでもデータの行を追加できるようにしたいと思います。私はいくつかの研究を行いました:link、そしてベクトルがおそらく私が必要とするものであることがわかりました。
私は現在、構造体のベクトルのベクトルを無駄にしようとしています。ここで
が私のコードです:事前にhttps://i.imgur.com/lNqbgyW.png構造体のベクトルのベクトル

ありがとう:

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

そして、ここではエラーが発生している私は、エラーDとの良好ではありませんよ!

+3

ベクトルが空である次のコードスニペットによっても達成することができ

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

同じ書き込むことがその後

vector< vector<Skills> > statTable(1, std::vector<Skills>(1)); 

のようなベクトルを宣言し、追加それへの要素。 – Incomputable

+1

あなたの質問には、リンクとしてではなくエラーを追加してください(SOで質問する方法についてのドキュメントを読んでください)。 – Yannis

+1

私はちょうどそれが最終的に効果があることを望むことでこれを言い続けるつもりです:コードの写真、または誤りを掲示しないでください。テキストで、テキストボックスに書いています。テキストを貼り付けるだけです。すべての可能な方法でより良い、より良いです。 – Useless

答えて

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

・ホープ、このことができます、I C++ 98 btwを使用しています。

+0

すべての応答ありがとう!私が最初にベクターを作っていなければならないことは分かっていませんでした:P –

1

古いコンパイラを使用しているようです。この場合、構造体をmainの外側に宣言します。たとえば、グローバル空間に配置します。この宣言

vector< vector<Skills> > statTable; 

ベクターstatTable

struct Skills 
{ 
    string type; 
    int value; 
}; 

int main() 
{ 
    //... 

は空です。したがって、添え字演算子は使用できません。

は、代わりにあなたが

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; 
関連する問題