[英]Using multimap and struct in C++
typedef struct
{
string idArtigo;
string tituloArtigo;
string veiculoPublicacao;
vector<string> autores;
}Publicacao;
我有一个像这样的向量:
vector<Publicacao> pub(1000);
和:
multimap<int,Publicacao> multimapa;
multimap<int,Publicacao>::iterator it;
即时通讯使用插入添加:
multimapa.insert ( pair<int,Publicacao>(i,p[i]));
multimapa.insert ( pair<int,Publicacao>(i,p[j]));
问题是,当我打印时,我无法打印该结构的矢量自动响应,仅打印其他变量,例如:
for (it=multimapa.begin(); it!=multimapa.end(); ++it)
{
arquivoResultado<<"Codigo Unico: "<< (*it).first<<endl; //works
arquivoResultado<<"Titulo: "<<(*it).second.tituloArtigo<<endl; //works
arquivoResultado<<"Autores: "<<endl; // works
for(i=0; (*it).second.autores.size(); i++) // NOT WORKS
{
arquivoResultado<<(*it).second.autores[i]<<" "; //FAIL EXECUTION
}
arquivoResultado <<"\nVeiculo: "<<(*it).second.veiculoPublicacao<<endl;
}
只是结构的向量在执行时间上有问题,我也不知道为什么。
for loop
的结构不完整。 它看起来应该类似于以下内容:
for(int i = 0; i < (*it).second.autores.size(); i++) // missing "i < " and the declaration of i
{
arquivoResultado << (*it).second.autores[i] << " ";
}
在您的样本中,当向量的大小大于零时会循环播放,这将永远是true或false。 正如您的注释中所写,一旦将其更改为循环,而索引小于其大小,它将开始正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.