【发布时间】:2015-02-10 16:50:35
【问题描述】:
我在将值插入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。
int i = 1
PC1:用户1
. . .
PC10:User10
int i = 2
PC1:用户1
. . .
PC10:User10
PC1:User11
. . .
PC10:User20
myMap 的结果不是我想要的。它应该是这样的:
int i = 1
PC1:用户1
. . .
PC10:User10
int i = 2
PC1:User11
. . .
PC10:User20
似乎对于myMap i=2,它也将包含来自 i=1 的值。
在将矢量插入地图之前,我已经尝试过 myVec.clear(),但我需要 structA 中的值保持不变。
那么关于如何仅存储 i=2 的值有什么建议吗?
【问题讨论】:
-
你在
std::map上打电话给push_back... -
@zenith 对不起。我把它改回
insert。谢谢提醒^^
标签: c++ dictionary vector struct iterator