[英]Reading in a .csv file and storing values into vector and struct c++
[英]Storing values inside a map of struct vector
我在將值插入map<int,vector<pair<structA,structB> > >
。 我有2 structA
和structB
我用來存儲數據。 然后使用幾個for
循環,將值存儲到映射中。
下面是簡化的代碼:
vector<structB>::iterator b = vecB.begin();
vector<pair<structA,structB> > myVec;
map<int,vector<pair<structA,structB> > > myMap;
for (int i = 1; i < 3; i++) {
for (vector<structA>::iterator a = vecA.begin(); a != vecA.end() ; a++) {
//...do stuff here
//push data into myVec
++b
}
myMap.insert(make_pair(i,myVec));
}
我從myMap
得到這樣的結果。
為了簡單起見,假設structA
和structB
分別是PC1-PC10和User1-User20。
整數i = 1
PC1:用戶1
。 。 。
PC10:User10
整數i = 2
PC1:用戶1
。 。 。
PC10:User10
PC1:User11
。 。 。
PC10:User20
myMap
的結果不是我想要的。 應該是這樣的:
整數i = 1
PC1:用戶1
。 。 。
PC10:User10
整數i = 2
PC1:User11
。 。 。
PC10:User20
似乎對於myMap
i = 2 ,它也將包含i = 1的值。
在將向量插入到映射中之前,我已經嘗試過myVec.clear()
,但是我需要structA
的值保持不變。 因此,關於如何僅存儲i = 2的任何建議?
這將完成您可能想要的操作:
vector<structB>::iterator b = vecB.begin();
map<int,vector<pair<structA,structB> > > myMap;
for (int i = 1; i < 3; i++) {
vector<pair<structA,structB>> myVec; // Initialize empty vector
for (vector<structA>::iterator a = vecA.begin(); a != vecA.end() ; a++) {
//...do stuff here
myVec.push_back(make_pair(*a,*b)); // Make a structA-structB pair and add it to myVec
++b;
}
myMap.insert(make_pair(i,myVec));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.