• ベストアンサー

STL-リストのpush_front()

1つ目のリストをiteratorでループ中に、2つ目のリストでpush_front(data)とするとエラーで処理が中断されてしまいます。 ループ中に他のリストにデータを追加することは無理なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

その文面では、状況が伝わりにくいと思います。 「どんなソースコード」を書いて実行したときに、「どんなエラー」が出て処理を中断してしまうのか、 「具体的に」書いてくださいませんか?

CTester
質問者

お礼

ソースを書こうと思いまた見直していると、イテレータが初期化されていませんでした。 2時間近く気付かずとても恥ずかしい思いです。 ご指摘ありがとうございました。

関連するQ&A

  • arayy_pushの挙動は?

    arayy_pushの挙動は? file関数で読み込んだカンマ区切りのデータ(改行コードはLF)をlist(data1,data2,data3)として、data3には改行コードが含まれたまま、全てのデータ(data1,data2,data3)の最後にaray_push関数で末尾にデータを追加(data4とする)した場合には、data3とdata4の改行コードはどうなるのでしょうか? array_pushのマニュアルには何も書いてなく、自動的にdata4には改行コードが付加されるか確認する方法がわかりません。 アドバイスをお願いします。

    • ベストアンサー
    • PHP
  • STLのlistで重複するものだけを取り出す方法

    C++でVC++7.0を使用してプログラミングを学んでます。 ひとつハマっているのですが…、 STLのlistを利用して、重複するデータのみを一つにしたlistにしたいです。 例えば std::list<std::string> [1] bbb [2] aaa [3] bbb [4] ccc [5] eee [6] ddd [7] bbb [8] ccc と格納されたlistがあった場合に、 [1] bbb [2] ccc と2つ以上あるデータを1つのみ格納するようにしたいです。 重複するデータを省く処理なら思いつくのですが… (.sort()で重複するデータを並べ、.unique()で重複するデータを削除する) 上記のようなことは可能でしょうか? 何か有効な案がありましたら是非ご教授下さい!

  • テンプレートクラスとSTLを利用したMyListクラス

    こんにちは。STLのリストを使い自分だけのMyListクラスを作ろうとしたのですが、コンパイルできません。 エラーメッセージは警告 std::list<T>::iterator' : 依存名は型ではありません。 とでます。 ご教授お願いします。 #include<list> #include<iterator> template <class T> class CMyList { public: CMyList(); //virtual ~CMyList(); //bool HasNext(); //T Next(); //void Pushback( T t ); //void EraseCheck(); //T GetFirst(); private: std::list< T > m_List; std::list< T >::iterator m_It;//コンパイルエラー }; template <class T> CMyList<T>::CMyList() { m_List.clear(); std::list< T > ::iterator it = m_List.begin();//こう宣言する分にはOK m_It = m_List.begin(); } int main() { CMyList<int> m_List; return 0; }

  • 育成堂とpush pushは詐欺かについての質問です。

    育成堂とpush pushは詐欺かについての質問です。 以前に同じ質問を他の掲示板でもさせてもらったのですが、 使い方がよくわからずに、質問を閉め切ってしまいました。 再度こちらで同じ質問をさせていただきますので情報をお持ちの方お願いします。 JOBチャンネルで、ROのレースでコインを集める作業をしていました。 応募後採用され最初に育成堂とのメールのやり取りをし、 その後、push pushという会社から 作業の指示が来ました。 指示されたアカウントで4カ月ほど作業をしていました。 1日の終わりに業務報告として、push pushにログイン時とログアウト前に コインの数がわかるようSSをとり毎日メールで報告していました。 6月の終わりに一時作業を中断するよう指示するメールが来ましたが それ以降連絡が途絶えている状態です。 念のためどうなっているのかpush pushに何度かメールをしましたが、 完全に無視されています。 育成堂にもメールをしたところ、メールデーモン?でメールが届かず戻ってきてしまいます。 以前こちらの掲示板でも他のゲームで、 育成堂、push pushともに連絡が途絶えたと書き込んでいた方がみえましたが、 おそらく詐欺にあったのだと思います。 ログインしてみましたが、数千枚あったコインがなくなり、 その後ログインできなくなりました。 もしも、何か情報を持っている方がいましたら情報をお願いします。 その後も、育成堂のJOBチャンネルでの募集の書き込みを発見したので JOBチャンネルに詐欺の可能性があると報告をし、担当者より返事があり 今後掲示板に育成堂の書き込みがあった場合、即刻削除するとの回答をもらいました。 同じような被害にあわれた方いらっしゃいますか? このような場合は泣き寝入りするしかないとあきらめてはいますが、 何かのきっかけになればと思い書き込みさせていただきました。 長文失礼しました。

  • Listのiteratorインターフェースについて

    Listのiteratorインターフェースについて教えてください。 ABCD EFGH NULL IJKL (cont) というような配列を持ったオブジェクトの各要素を順に読み、もし、その要素が'NULL'という文字列を持っていたらスペースに置き換えたいののですが、方法がわかなくて困っています。 Listのiteratorインターフェースに要素を追加したり、削除したりするメソッドがあることはわかったのですが、更新の方法はあるのでしょうか。 もし、あればそのメソッドを教えてください。

    • ベストアンサー
    • Java
  • ListからMapを作成 MapのValueにはListをput

    すみません、どなたか教えて下さい。 あるListからMapを作成したく、同じkeyが存在する場合、valueのListへ値を追加したいですのですがConcurrentModificationExceptionエラーが返されてしまいます。エラーを返さないように変数を使い分け工夫したつもりですが。。。((1)でmapAにもaddされている!?)他に良い方法はないでしょうか? Map mapA = new TreeMap(); Map mapB = new TreeMap(); Iterator it = listA.iterator(); while (it.hasNext()) { Bean bean = (Bean)it.next(); List mapvaluelist = new ArrayList(); if (mapA.size()==0){ mapvaluelist.add(bean); mapA.put(bean.getName(),mapvaluelist); }else{ if (mapB.size()!=0){ mapA = mapB; } Set keyset = mapA.keySet(); Iterator itmap = keyset.iterator(); while (itmap.hasNext()){ String mapkey = (String)itmap.next(); if (bean.getName().equals(mapkey)){ mapvaluelist = (List)mapA.get(mapkey); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); (1) }else{ mapvaluelist.clear(); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); } } } }

  • listをvectorにコピーするときに

    例えば #include<iostream> #include<vector> #include<list> using namespace std; void main(void) { unsigned pos; list<unsigned> lu; list<unsigned>::iterator p; vector<unsigned> vu; for(lu.clear(),pos=0;pos<9;lu.push_back(pos++)); for(p=lu.begin();p!=lu.end();cout<<*p++); cout<<endl; vu=vector(lu); //error for(pos=0;pos<vu.size();cout<<vu[pos++]); cout<<endl; } とするとエラーになるため//errorのかわりに vu.clear(); vu.insert(vu.begin(),lu.begin(),lu.end()); としていますが少し不細工です 他に方法はあるのでしょうか?

  • 486のpush %ds 命令

    古いlinuxのコードを読んでいて分からないことがありました。 具体的には、linux-0.1/kernel/asm.s の_divide_errorルーチンなどにあるのですが、 push %ds 命令がスタックを4バイト消費しているとして処理が行われているのです。 %ds は16bitのはずですし、普通にpushしたら2バイトしか消費しないように思えます。 スタックセグメントが32bitの場合は無条件に4バイト消費するのかと思い調べましたが そういう記述は見つけられませんでした。 これはバグなのかと思い始めたのですが、中国語で解説されてるドキュメントを 発見して、push %ds で4バイト消費する図が描かれていました。 push %dsで消費するスタックの量は4バイトなのでしょうか?

  • STLのlist どのデータでソートするか分からないデータでソートを行うには?

    class data { public: 文字列型* str; //コンストラクタでN個の配列を生成 int N; //文字列の配列の個数 }; list<data> obj; と書いて、objに対して大量にデータを追加した後、その要素をソートするところで困っています。 データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 リストのデータの一つ目 str[0] = "abc"; str[1] = "def"; リストのデータの二つ目 str[0] = "ghi"; str[1] = "jkl"; というリストのデータがあったときに、str[0]の要素でソートしたいということなのですが........ メンバのint型などについては、operator<をオーバーロードする方法が見つかったのですが........

  • リストとは何か?

    データ構造の「リスト」と、データを表の形にして処理するときの「リスト処理」のリストの本質的な違いがよくわかりません。わかりやすく教えて下さい。また、オブジェクトとしての「リストボックス」などとの違いも教えて下さい。 また、これら以外の意味をもつ「リスト」というのはありますでしょうか。

専門家に質問してみよう