-
TestingSTLOperations 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