ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TestingSTL
    Operations Dev/Testing Timer 2010. 12. 10. 17:27


    // TestingSTL.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
    // 구조체는 디폴트는 public 클래스는 프라이빗, 구조체는 자료형의 집합, 클래스는 자료형과 그것을 사용하는 멤버함수의 집합

    #include "stdafx.h"
    #include <iostream>
    #include <vector>
    #include <list>
    #include <map>
    #include <algorithm>

    using namespace std;

    class TestClass
    {
    public:
     TestClass(int x)
      :_x( x )
     {
     }
     TestClass(TestClass const & rhs)//클래스의 인스턴스가 생성될때 호출된다.
      :_x(rhs._x)
     {
     }

     TestClass operator+(TestClass const & rhs) //TestClass를 리턴하는 이유는 z= x+y일때 =연산자도 오버로딩을 해야하기때문에
     {
      //return this->_x + rhs._x;
      return TestClass(_x + rhs._x);

     }

     TestClass & operator=(TestClass const & rhs) //TestClass를 리턴하는 이유는 z= x+y일때 =연산자도 오버로딩을 해야하기때문에
     {//primitive 타입을 제외하고는 사칙연산및 비교연산은 불가능함, 단 연산자 재정의 가능함
      this->_x = rhs._x;
      return *this;

     }

     template<typename E, typename U>
     friend std::basic_ostream<E, U>& operator<<(std::basic_ostream<E, U>& os, TestClass const & rhs)
     {
      os << L"(" << rhs._x<< L")";
      return os;
     }

     bool operator==( TestClass const & rhs) const
     {
      return _x == rhs._x;
     }

     bool operator!=( TestClass const & rhs) const
     {
      return _x != rhs._x;
     }

    private:
     int _x;
    };

     

    template <typename Type>
    Type sum( Type t1, Type t2)
    {
     return t1+t2;
    }

     

     

    int _tmain(int argc, _TCHAR* argv[])
    {
     vector< int > intVector;
     
     for( int i =0; i < 100; ++i)
     {
      intVector.push_back( i );
     }
     
     
     //wcout<<intVector.size()<<endl; //벡터에서 차례대로 하나씩 꺼내서 출력!
     //wcout<<intVector[50]<<endl;
     //intVector[50]=99999;
     //wcout<<intVector[50];

     //for ( int i = 0; i < intVector.size(); ++i )
     //{
     // wcout<<intVector[i]<<endl;
     //}

     //vector< int >::iterator iter;

     //for( iter = intVector.begin();
     // iter != intVector.end();
     // ++iter)
     //{
     // cout<<(*iter)<<endl;
     //};
     //

     

     vector< int >::iterator iter;

     //iter = find( intVector.begin(), // 찾아서 포인터로 전달한다.
     // intVector.end(),
     // 10);

     //intVector.erase(iter); // 포인터로 아예 삭제

     //cout<<endl<<intVector.size()<<endl;

     //for(iter = intVector.begin(); iter != intVector.end(); iter++) // 출력해보면 오류없이 중간만 빠져서 출력된다.
     // cout<< (*iter) <<endl;


     //cout<< intVector.size() <<endl;

     // iter = find( intVector.begin(),
     // intVector.end(),
     // 70);
     //intVector.insert(iter, 9999); // 찾은 위치에 새로운값넣기

     //cout<<intVector[70]<<endl;

      //iter = find( intVector.begin(),
      //intVector.end(),
      //70);

      //if(iter == intVector.end()) // 포인터가 벡터의 끝이면 출력
      //{
      // cout<< "END" <<endl;
      //}

     


     
     //for_each( intVector.begin(), // foreach사용하여 출력
     // intVector.end(),
     // [](int element)
     //{
     // wcout<<element<<endl;
     //});
     //
     
     
     TestClass t1(5), t2(2);
     TestClass t3(3);
     //TestClass t3= t1 + t2;
     cout<<sum<TestClass>(t1, t2)<<endl; 
     cout<<sum< int >(5, 10)<<endl;
     cout<<sum<double>(1.0, 2.5)<<endl;
     
     return 0;
    }

     

    'Operations Dev > Testing Timer' 카테고리의 다른 글

    Timer 파일들  (0) 2010.12.10
    TestProcessStateModel  (0) 2010.12.10
    TwoStatemodel  (0) 2010.12.10
Designed by Tistory.