将数据存储在结构向量的结构向量的映射中

Storing data within a map of a vector of structs of a vector of structs

本文关键字:向量 结构 映射 数据 存储      更新时间:2023-10-16

这里是第一篇文章,我正在研究一些代码来尝试从多个CSV文件中读取,将它们组合成一个"主"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));

除此之外,我真的不知道我将如何访问它的内部组件。对地图非常陌生,这种深刻的代码"开端"有点让我失望。

因此,任何帮助将不胜感激!谢谢:)

好吧,TheBook,将int映射到NameGradesvector上,这意味着:

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;

修复代码(#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;