将数据存储在结构矢量的结构矢量图中

时间:2014-02-21 22:33:47

标签: c++ vector map struct

首先发布这里,我正在研究一些代码,尝试从多个CSV文件中读取,将它们组合成一个" Master" CSV文件。 (编码:C ++ Visual Studio 2013顺便说一下)

无论如何,这不是我遇到的麻烦。我在设置初始容器时遇到困难,我想将这些值存储到其中。这是我到目前为止的设置:

#include <vector>
#include <map>
using namespace std;
    struct GradeCategories{
        string category;
        int grade;
    }; GradeCategories grade_cat;

    struct NameGrades{
        string name;
        vector<GradeCategories> v;
    }; NameGrades NG;

    typedef map<int, vector<NameGrades>> TheBook;

那么我怎样才能在这个设置中访问/输入数据呢?

我试过了:

TheBook[12345017][NG.name = "Bob Jones"].push_back((grade_cat.category = "Exam 1")(grade_cat.grade = 95));

除此之外,我真的不知道如何访问它的内部组件。对于地图来说非常陌生,而且这是一个非常重要的地图。代码有点像扔我。

所以任何帮助都将非常感谢!谢谢:))

2 个答案:

答案 0 :(得分:1)

好吧,TheBook,将int映射到vector NameGrades,这意味着:

TheBook[int] = vector<NameGrades>;

从一个GradeCatagories对象开始:grade_cat

grade_cat.category = "Exam";
grade_cat.grade = 95;

现在将其放在vector

vector<GradeCategories> vgc;
vgc.push_back(grade_cat);

现在我们可以转到NG

NG.name = "Bob Jones";
NG.v = vgc;

现在我们可以将其插入vector

vector<nameGrades> vng;
vng.push_back(NG);

最后,我们可以将其插入地图:

TheBook tb;
tb[12345017] = vng;

答案 1 :(得分:0)

在修复代码(#include <string>)和TheBook typedef(在>>之间放置一个空格)后,您可以像这样访问它:

TheBook aBook;
aBook[1]     // Access map<int, THIS> > where int==1
[2]          // Access vector<NameGrades>[THIS] where THIS==2
.v[3]        // Access NameGrades.v[3]
.grade = 5;

如果您想在书中添加内容,请按以下方式添加:

GradeCategories a,b,c,d;
NameGrades v1,v2;

v1.v.push_back(a); v1.v.push_back(b);
v2.v.push_back(c); v2.v.push_back(d);

vector<NameGrades> outerVector;
outerVector.push_back(v1); outerVector.push_back(v2);

TheBook aBook;
aBook[1] = outerVector;