2014-02-21 42 views
1

第一篇文章在这里,我正在尝试从多个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));

除此之外,我实在不明白我怎么会访问该内部组件。对于地图来说,这是非常新颖的东西,而这个“代码初始化”的深刻之处在于让我感到非常兴奋。

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

回答

1

好,TheBook,映射int到的NameGrades一个vector,这意味着:

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; 
+0

此外,一个好的STL参考看看: http://www.cplusplus.com/reference/map/map/ – TonyWilk

+0

非常感谢您的帮助! 现在,印刷它是一个完整的其他野兽?它会类似于打印嵌套数组,除非更复杂?我已经对迭代器和与地图相关的一些方面进行了一些研究,但是将它与矢量和结构相结合可能会使它更具挑战性。 @TonyWilk,你好!我检查了几次。这绝对是让我站在正确的起点上。谢谢! – CozmoNaught

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; 
+0

双尖括号'>>'是有效的C++ 11 –

+0

@NicolaMusatti该主题没有“C++ 11”标签。 –

+0

除非你初始化矢量,否则不会抛出异常吗? – TonyWilk