#include <fstream>

#include <sstream>

using namespace std;

 

void foo( pair<string, list<int> > p )

{

        cout << p.first << endl;

}

 

void main()

{

        map<string, list<int> > cross_index; // 이 자료구조를 생각해보자.

 

        //map<string, list<list<int> > >;    // 2차원 배열도 받아서 할 수 있다.

 

        ifstream f("a.cpp");   // 현재 파일이름 넣으세요.

        int line = 0;          // line no 관리

        string temp;

 

        // file에서 한 줄씩 읽어 들인다.

        while( getline( f, temp ) )     // 주의 f >> temp; 한 단어 입력

        {

               ++line; // 라인 no++

 

               istringstream iss( temp );

               string word;

 

               while( iss >> word )          // 한 문장을 단어별로 분리해 낸다.

               {

                       cross_index[ word ].push_back(line);

               }

        }

        //------------------------------------

        // 이제 map을 출력한다.

 

        // print_word_list

        for_each( cross_index.begin(), cross_index.end(), foo );

 

        // print_word_line_list

        map<string, list<int> >::iterator p = cross_index.begin();

       

        ostream_iterator<int> out( cout, " " );

 

        while ( p != cross_index.end() )

        {

               cout << p->first << " : "; // 단어출력

               copy( p->second.begin(), p->second.end(), out );

               cout << endl;

 

               ++p;

        }

}

 

// 응용비디오샵!!!

//map<Customer, list<VideoTape> > retal_list

//copy( cross_index["홍길동"].begin(), cross_index["홍길동"].end(), out );

 

 

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다