繁体   English   中英

在C ++中使用多图和结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM