본문 바로가기

기타

STL - Vector Copy // copy 알고리즘을 이용한 복사 vDst.resize( (int)(vSrc.size()) ); std::copy( vSrc.begin(), vSrc.end(), vDst.begin() ); std::copy( vSrc.begin() + 2, vSrc.begin() + 5, vDst.begin() ); // assign 을 이용한 복사 vDst.clear(); vDst.assign( vSrc.begin(), vSrc.end() ); // 전체 복사 vDst.assign( vSrc.begin() + 1, vSrc.begin() + 4 ); 더보기
C++ - wchar_t 와 char 의 형변환 /////////////////////////////////////////////////////////////////////// //wchar_t 에서 char 로의 형변환 함수 char * ConvertWCtoC(wchar_t* str) { //반환할 char* 변수 선언 char* pStr ; //입력받은 wchar_t 변수의 길이를 구함 int strSize = WideCharToMultiByte(CP_ACP, 0,str,-1, NULL, 0,NULL, NULL); //char* 메모리 할당 pStr = new char[strSize]; //형 변환 WideCharToMultiByte(CP_ACP, 0, str, -1, pStr, strSize, 0,0); return pStr; } ////////.. 더보기
C++ - 클래스 복사방지 Effective C++ 내용 항목 06: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 함수의 사용을 금해버리는 예제를 보도록 하자. 상황을 만들자면... 부동산 APP을 만드는데, 그 APP에서 매물로 내놓은 가옥을 하나의 클래스로 정의한다. 그리고 모든 자산은 세상에 하나 밖에 없다고 가정한다. 1: class HomeForSale { ... }; 위와 같은 클래스를 정의하고 세상에 하나 밖에 없는 자산이니, 이 HomeForSale 클래스 객체에 대한 사본을 만드는 것은 이치에 맞지 않다. 1: HomeForSale h1; 2: HomeForSale h2; 3: 4: HomeForSale h3(h1); // h1을 복사하려 하나, 컴파일 되면 안됨! 5: 6: h1 = h2; // h2를 복사하려 하.. 더보기
C++ - 클래스 복사 방지하기 클래스가 동적으로 메모리가 할당되는 멤버변수를 가지는 경우 디폴트 복사 생성자와 대입 연산자를 사용하게 되면, 얕은 복사가 발생해 Dangling Pointer와 메모리 누수가 발생 할 수 있습니다. 때문에 클래스가 복사되는 것을 막는 방법이 필요합니다. class SomeObj { public: ... privatre: SomeObj(SomeObj&); // 선언은 하되 구현은 하지 않는다. SomeObj& operator=(SomeObj&); // 선언은 하되 구현은 하지 않는다. }; 또는 class Uncopyable { public: Uncopyable() {} ~Uncopyable() {} private: Uncopyable(Uncopyable&); // 선언은 하되 구현은 하지 않는다. Un.. 더보기
C++ - [STL] auto_ptr – 조심히 사용해야 하는 스마트 포인터 변태적인 복사 동작을 하는 스마트 포인터다. 꼭 필요한 경우가 아니라면 레퍼런스 카운팅을 하는 스마트 포인터를 사용하자. 스마트 포인터? In computer science, a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic garbage collection or bounds checking. - http://en.wikipedia.org/wiki/Smart_pointer 스마트 포인터란 자동으로 자원 해제를 하는 등의 추가적인 동작을 하는 포인터의 추상 데이터 타입(abstract data type)이다. 소유권(ownership)을 넘겨.. 더보기
C++에서 스마트 포인터 템플릿 C++에서 스마트 포인터 템플릿 데이비드 하비 (David Harvey) ⓒ 1995/1996 David Harvey. All rights reserved Contact Home: http://www.davethehat.com/ 작성 날짜 :1997년 6월 27일 1997 년 11 월 30 일 수정 이 글을 쓸 수 있도록 권한을 준 개체 디자이너에 대한 감사를 표함 이 문서는 형식화 된 개체 변수의 구현에서 작동하도록 넣어 유용한 C + + 템플릿 관용구의 설명을 제공합니다. 템플릿 의 C + + 몇 시간 동안 , 작년 정도 의 언어 의 이 기능 의 잠재력 에 대한 관심이 급증 가능성을 보여줬습니다 . 일부가되어 있지만 이 인기있는 컴파일러 의 믿을 수있는 (물론, 합리적으로 신뢰할 수있는 ) 구현 의 .. 더보기