조경민
이중배열 만들기 vector

오후 12:51 2000-05-12
====================================================
다음처럼 vector 를 겹치면 이중 배열을 생성할 수 있다. (동적 이중배열)
실제 안의 값은 VARIANT로 했다.

vector<        vector< VARIANT > >                arrData;


        void        fnSetData( int nRow, int nCol, VARIANT& varValue );
        void        fnSetData( int nRow, int nCol, double dblValue );


void _tagSTCHART_DATA::fnSetData( int nRow, int nCol, double dblValue )
{
        VARIANT varValue;
        varValue.vt = VT_R8;
        varValue.dblVal = dblValue;
        fnSetData( nRow, nCol, varValue);
}

void _tagSTCHART_DATA::fnSetData( int nRow, int nCol, VARIANT& varValue )
{
        // 디폴트 값을 설정한후
        static VARIANT varEmpty = { VT_EMPTY, };
        
        // 현재 행의 크기를 얻어온다.
        int nSize = arrData.size();
        if( nSize <= nRow )    // 행보다 큰 값으로 값을 넣으려면 vector
                               // resize를 해야 한다.
                arrData.resize( nRow + 5 );
        // 그 행에 대한 열의 크기를 얻어온다.
        nSize = arrData[nRow].size();
        if( nSize <= nCol ) // 역시 rezinge 코드
                arrData[nRow].resize( nCol + 5 , varEmpty );
                // varEmpty는 실제 VARIANT에 리사이징후 새로만들어진
                // VARIANT들에게 들어가는 디폴트 값이 된다.

        // 그런후 자기가 넣고 싶은 행열에 값을 넣은다.
        arrData[nRow][nCol] = varValue;

        // VARIANT타입이 Double형이라면        어떤 일을 한다.
        if( varValue.vt == VT_R8 )
                fnCheckMiniMax( varValue.dblVal );

        if( nCol >= nMaxLegend )
                nMaxLegend = nCol+1;
        if( nRow >= nMaxSeries )
                nMaxSeries = nRow+1;

}

'KB > C/C++' 카테고리의 다른 글

C++ Casting  (0) 2004.03.19
[stl] STL List를 사용하기  (0) 2004.03.19
STL String  (0) 2004.03.19
Boyer Moore 문자열 패턴 매칭  (0) 2004.03.19
라인위의점으로선택  (0) 2004.03.19

+ Recent posts