我有一个小问题。我有一个成对模式出现的向量。对是<string,int>
,其中 string 是模式(名称), int 是它出现的索引。我的问题是 patternOccurences 有多对具有相同的 .first(相同模式)但不同的 int 值。例如:向量有 10 个条目。模式“a”的 5 个和模式“b”的 5 个。都有不同的指标。现在我想要一个地图(或类似的东西),这样我就有一个向量/列表,每个模式(在我的例子中是“a”和“b”)作为键,它们的索引向量作为值。索引在我的对向量中的不同对中,我希望 int 向量中模式“a”的所有索引作为键“a”的值。
我尝试了以下方法:
std::map<std::string,std::vector<int>> occ;
for(int i = 0;i<patternOccurences.size();i++){
if(occ.find(patternOccurences.at(i).first)==occ.end()){
occ[patternOccurences.at(i).first]=std::vector<int>(patternOccurences.at(i).second);
}
else{
occ[patternOccurences.at(i).first].push_back(patternOccurences.at(i).second);
}
}
patternOccurences 是对的向量,并 occ 所需的地图。首先,我检查是否已经有字符串(模式)的条目,如果没有,我创建一个以向量作为值的条目。如果已经有一个,我尝试用索引 push_back 向量。但是,它似乎无法正常工作。对于第一个模式,我得到一个仅作为值的向量,对于第二个模式,只有 3 个索引是正确的,其他索引也是 0。
我希望你能帮助我。卡祖伊