トップ-> C++入門:7章 STL-> list

←前ページへ :  トップへ :  次ページへ→


  2つのリストをマージする例を示します。
#include <iostream>

// listを使えるようにする
#include<list>
using namespace std;

//
// リストの表示
void disp( list<int>& lst ){
    // イタレーターの宣言
    list<int>::iterator itr    = lst.begin();
    list<int>::iterator itrEnd = lst.end();

    for( ; itr != lst.end() ; itr++ )
		cout << *itr << " ";
	cout << endl;
}

int main(int argc, char* argv[]){
    // リストを宣言
    list<int>  lst1, lst2, lst3, lst4;
    int        i, n;


    // リストに追加
    for( i = 0 ; i < 5 ; i++ ){
        n = rand() % 10;
        // listなので、push_frontが使える
        lst1.push_front( n );
        lst3.push_front( n );
    }

    for( i = 0 ; i < 5 ; i++ ){
        n = rand() % 10;
        lst2.push_front( n );
        lst4.push_front( n );
    }


    // lst1の表示
    cout << "list1  ";
	disp( lst1 );
    cout << endl;

    // lst2の表示
    cout << "list2  ";
	disp( lst2 );
    cout << endl;

    // リストをマージ
    lst1.merge( lst2 );

    // lst1の表示
    cout << "list1  ";
	disp( lst1 );
    cout << "↑ソートされていないリストをマージしたので、結果の順番もめちゃくちゃ" << endl << endl;

    // ソートしてからマージしてみる
    lst3.sort();
    lst4.sort();
    lst3.merge( lst4 );

    // lst3の表示
    cout << "list3  ";
    disp( lst3 );
    cout << "↑ソートされたリストをマージしたので、結果の順番もソートされている" << endl << endl;

    // lst2の表示
    cout << "list2  ";
    disp( lst2 );
    cout << "list4  ";
    disp( lst4 );
    cout << "↑追加した方はからになっている" << endl;

    return 0;
}
list1  9 0 4 7 1

list2  4 2 8 8 4

list1  4 2 8 8 4 9 0 4 7 1
↑ソートされていないリストをマージしたので、結果の順番もめちゃくちゃ

list3  0 1 2 4 4 4 7 8 8 9
↑ソートされたリストをマージしたので、結果の順番もソートされている

list2
list4
↑追加した方はからになっている


←前ページへ :  トップへ :  次ページへ→