2016-08-02 73 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

在你的樣品,你循環而向量的大小是大於零,這將是真的還是假的永遠。正如您的評論中所寫,一旦您將其更改爲循環,而索引小於其開始正確工作的大小。