首先发布这里,我正在研究一些代码,尝试从多个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));
除此之外,我真的不知道如何访问它的内部组件。对于地图来说非常陌生,而且这是一个非常重要的地图。代码有点像扔我。
所以任何帮助都将非常感谢!谢谢:))
答案 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;