2017-05-12 19 views
-3

要素をベクトルセットに挿入する方法。セットは、私がインデックスを使用できない構造、またはbegin()end()です。私はinsert()erase()の方法しか使用できませんでした。そして、これはどのように構造化されていますか? このコード部分は機能しません。timovi[i].insert('A')にもエラーが表示されます。また、timovi.insert('A');にこれらの要素を印刷しようとしています。私はまた、sets,vector、そしてprogrammに使われているものすべてを含んでいます。説明のため要素を文字列セットのベクトルに挿入するC++


timoviはチーム、br_timovaはチームの数であり、vel_timset内の要素の数であることを意味します。

std::vector<std::set<std::string>> timovi; 
    for(int i (0); i < br_timova ; i++){ 
      timovi.push_back(std::set<std::string>()); 
      for(int j (0); j < vel_tim ; j++){ 
       timovi[i].insert('A'); 
      } 
     } 


     for(int i (0); i < timovi.size();i++){ 
      for(auto x : timovi[i]) std::cout<<x<<" "; 
      std::cout<<std::endl; 
     } 
+0

エラーは何ですか? – NathanOliver

+0

_Setはインデックス作成やbegin()、end()._ 1)を使うことができない構造体です。 'set'のインデックスは必要ないので、なぜそれが利用できないのですか? 2)あなたは 'begin'と' end'イテレータを使うことができます**。このような主張をする前に、 'set'のドキュメントを見てみましたか? –

+2

'' A''は 'char'ですが、' timovi [i] .insert(...) 'は' std :: string'を期待しています。 –

答えて

1

このコード

timovi[i].insert('A') 

はに簡素化することができる問題があります:

std::set<std::string> s; 
s.insert('A'); 

問題は、この場合のstd::set::insert()std::stringを期待していることですが、あなたは、単一のchar 'A'を提供し、そこにありますcharからstd::stringへの暗黙的な変換はありません。

s.insert(std::string(1, 'A')); // one char 

または単に使用して文字列リテラル:

s.insert("A"); // note double quotes 

をまたは多分あなたの代わりにstd::set<char>を持っていると仮定しますが、単一文字から文字列を作成することができます。

+0

ありがとうございます。それは私の多くを助けます。 (Y) –

関連する問題