본문 바로가기
STL Vector 기초 #include//벡터 인클루드 #includeusing namespace std; //벡터 레퍼런스를 받아서 template voidFitCapacity(vector&rVecSource){//새로운 임시변수 벡터를 만듬//복사생성하면서vectorvecDest(rVecSource);//레퍼런스로 들어온 벡터랑 새로 생성한 벡터를 바꿔치기함 //그럼 중괄호 끝나면 새로만든애는 없어진다 .rVecSource.swap(vecDest);}void main(void){ //vector -동적배열 컨테이너를 제공하는 클래스 템플릿 //임의 접근 가능 (인덱스접근가능)//원소 맨앞에 추가못해//임의의 위치에 삽입 /삭제하면 임의의 위치로부터//저장된 원소의 개수에 비례하는 시간을 필요로 한다 //중간 삽입삭제시 메모.. 2015. 10. 20.
STL 기초 학습 STL - Standard Template Library C++ 에서 제공해주는 라이브러리이고 광범위 하게 많이 쓰인다프로그램에 필요한 자료구조나 알고리즘을 제공해준다 자료유형에 관계없이 일반화된 프로그래밍 환경을 제공해주는 Genric Programming 이다 STL - 컨테이너 , 인터레이터(반복자) , 함수객체, 알고리즘 (모두 템플릿으로 되어있다) 1. 컨테이너 - 객체를 저장하는 객체 (컬렉션, 자료구조) //시간복잡도 - 어떤함수의 증가양상을 다른함수와의 비교로 표현하는 수론과 해석학의 방법알고리즘의 복잡도를 단순화 할때와 무한급수의 뒷부분을 관략화 할때 사용한다big O 표기법, 란다우 표기법 으로 사용한다 //완벽하지 않을수느 있다 최적화 하는 경우에 내가 만들수도 있을것이다 2. 이터레.. 2015. 10. 20.
메크로함수 //C++메크로 함수 전처리기를 사용한다 #define PURE = 0 프로그램 실행순서1.프로그램 작성 2. 전처리기 3.컴파일러에 의한 컴파일 4. 링커에대한 링크 5. 실행파일 생성 #define PI 3.1415#define MAX_NAME 20 단순 치환 작업시에 유용하다 함수의 간단한 기능을 메크로로 써서 구현할수있다 1.메크로 함수는 전처리기에서 단순 치환 작업이 일어나기때문에 자료형을 명시할 필요가 없다 ./ 자료형에 대해 독립적이다 2.함수호출시 비용이 발생 - 메크로는 치환작업 이기 때문에 런타임시에 함수호출에 따른 속도 저하 가 없다 3. 메크로 함수 부분이 실제 코드로 치환되기 때문에 코드의 양이 늘어나는 단점이 있다. 4. 메크로를 이용하여 함수를 대체하는것은 소스의 가독성을 떨어.. 2015. 10. 18.
템플릿 intSum(int iA, int iB){return iA + iB;} floatSum(float fA, float fB){return fA + fB;} doubleSum(double dA, double dB){return dA + dB;}void main(void){cout 2015. 10. 18.
연산자 오버로딩 #include#include#includeusing namespace std; void main(void){//오버리딩이 같은이름으로 다른 기능을 수행하는것 //연산자 오버로딩은 객체지향 언어에서 다형성의 특징이다 //예를 string 으로 들면string strName;string strName2; strName = "NAM";strName2 = "SEUNGWOO";strName += strName2; if(strName == strName2){cout 2015. 10. 18.
오버라이딩_virtual2 정적 - 컴파일에 성격이 결정 된다동적 - 런타임에 성격이 결정된다 static - 컴파일 타임에 이미 성격이 결정된다( 정적) 실행중에 성격이 결정되는것은 dynamic 이라고 부른다 //함수실행 순서프로그램실행 - 함수호출 - 함수저장주소 참조 - 함수실행 - 함수호출위치로 복귀 이런과정에서 함수저장주소로 연결시켜주는것은 바인딩(binding) 이라고한다 호출하는 위치와 호출될 함수의 주소를 묶는 개념이다 1. 정적 바인딩 (static binding ) - 컴파일 타임에 이미 결정 이미 컴파일 타임에 호출할 위치와 호출될 함수의 주소가 결정이 되어 바인딩되는것이다정적 바인딩이 많으면 많을수록 컴파일 타임에 많은 정보가 결정이 된다. 즉 실행속도가 빨라진다/////////////////////////.. 2015. 10. 13.
오버라이딩_virtual 오버로딩 - 함수의 이름은 같은데 매개변수가 다른것 매개변수를 통해서 함수를 식별한다 오버라이딩 - 부모클래스에 이미 정의되어있는 멤버함수를 자식클래스에서다시 정의 해서 사용하는것 class A{public: voidRender(void){cout 2015. 10. 13.
캐스팅연산 캐스팅연산자..... int iA = 3.1415;이런식의 선언을 묵시적 선언이라고 한다int iB = (int)3.1415;이런식의 선언을 명시적 선언 이라고 한다 부동 소수점 형태에서 정수타입으로 묵시적인 형변환이 일어났다고 설명할수가있다 묵시적 형변환은 타입변환이 필요할때 우리가 따로 캐스팅(형변환) 을 안하면 컴파일러에 의해서 자동으로 일어나는 것이다 float fA = 9695.244f;int iC = fA ; // 묵시적 변환 캐스팅 문법에는 5가지가 있다 1. static_cast 형변환을 해주는 연산자로서 논리적으로 가능한 캐스팅을 수행해 준다class CParent{public:int iA;}; class CChild : public CParent{public:int iB;};void m.. 2015. 10. 12.
클래스_상속 클래스에 상속을 사용함에 있어서는꼭 필요할때만 상속을써야지 너무 남발하면 좋지 못하다 상속의 조건 1. is -a 관계가 성립 // 플레이어는 유닛이다2. has - a 관계가 성립 // 소유의 개념 // 플레이어 무기를 사용한다() 함수에서 칼을 휘두루다() 함수를 호출 하는것 has - a 관계는 포함 이라는 방법을 통해서 표현한다 //EXAMPLE class CSword{public:void Swing(){cout 2015. 10. 12.