2016-08-21 13 views
-4

私はC++の新機能です。私は以下を試しましたが、私は誤りを訂正しています。stringのllistのベクトルを宣言して処理する方法は?

vector<list<string>> ques(size); //initialization 
cout<<ques[pos].front()<<endl; //printing out the top element at pos 
vector<list<string>>::iterator it; 
for(it=ques[pos].begin();it!=ques[pos].end();it++) //traversing through the list at pos <getting error>   
{ 
       cout<<*it;   
} 

error: no match for ‘operator=’ (operand types are ‘std::vector<std::list<std::basic_string<char> > >::iterator {aka __gnu_cxx::__normal_iterator<std::list<std::basic_string<char> >*, std::vector<std::list<std::basic_string<char> > > >}’ and ‘std::list<std::basic_string<char> >::iterator {aka std::_List_iterator<std::basic_string<char> >}’)| 
+1

エラーを投稿してください。 – SurvivalMachine

+0

どのエラーが表示されますか? – JVApen

+1

ほとんどの場合、表示されていないコードについて、誰もがコンパイルエラーが何であるかを推測することを期待していますか? –

答えて

0

あなたはstd::list<std::string>を反復処理しています。

これは、あなたのイテレータがなければならないことを意味します

list<string>::iterator it; 

ない:

vector<list<string>>::iterator it; 

これは、ベクター自体を反復処理のためになります。

さらに、それは全て自身で、コンパイラの姿をこのアウトになり、現代C++を使用するようにしても良いでしょう:

for(auto it=ques[pos].begin(); it!=ques[pos].end(); it++) 

とさらに良い:

for (auto &value: ques[pos]) 
    cout << value; 
関連する問題