2016-08-02 42 views
-1
typedef struct 
{ 
string idArtigo; 
string tituloArtigo; 
string veiculoPublicacao; 
vector<string> autores; 
}Publicacao; 

我有这样的载体:在C++使用多重映射和struct

vector<Publicacao> pub(1000); 

和:

multimap<int,Publicacao> multimapa; 
multimap<int,Publicacao>::iterator it; 

im使用插入物添加:

multimapa.insert (pair<int,Publicacao>(i,p[i])); 
multimapa.insert (pair<int,Publicacao>(i,p[j])); 

的问题是,当IM打印时,我不能打印结构的矢量自动装置,只是另一个变量s,如:

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;        
} 

只是结构的向量有执行时间的问题,我不知道为什么。

+0

难道你错过了一些语法吗?就像'我<(* it).second.autores.size();' –

+0

甚至没有arquivoResultado <<(* it).second.autores [0];工作,就像有些事情是错误的,不能接触这个项目,或者我真的错过了正确的语法。 –

+0

你能提供一个[MCVE]吗? –

回答

3

您的for loop的结构不完整。它看起来应该与此类似:

for(int i = 0; i < (*it).second.autores.size(); i++) // missing "i < " and the declaration of i 
{ 
    arquivoResultado << (*it).second.autores[i] << " "; 
} 
1

在你的样品,你循环而向量的大小是大于零,这将是真的还是假的永远。正如您的评论中所写,一旦您将其更改为循环,而索引小于其开始正确工作的大小。