gpt4 book ai didi

c++ - 将值存储在结构 vector 的映射中

转载 作者:行者123 更新时间:2023-11-30 05:47:55 25 4
gpt4 key购买 nike

我在将值插入 map<int,vector<pair<structA,structB> > > 时遇到问题.我有 2 structAstructB我用它来存储数据。然后使用几个 for循环,我将值存储到 map 中。

下面是简化的代码:

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 得到这样的结果.
为简单起见,假设 structAstructB分别是PC1-PC10和User1-User20。
int i = 1
PC1:用户1
. . .
PC10:用户10

int i = 2
PC1:用户1
. . .
PC10:用户10
PC1:用户 11
. . .
PC10:用户20

结果来自 myMap这不是我想要的。它应该是这样的:
int i = 1
PC1:用户1
. . .
PC10:用户10

int i = 2
PC1:用户11
. . .
PC10:用户20

似乎对于myMap i=2,它也将包含 i=1 的值。
我试过myVec.clear()在将 vector 插入 map 之前,我需要来自 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));
}

关于c++ - 将值存储在结构 vector 的映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com