본문 바로가기

programing150

Git 개념 가이드 svn 능력자를 위한 git 개념 가이드 from Insub Lee https://backlogtool.com/git-guide/kr/ 2016. 8. 5.
erase()와 remove() 차이 - erase()는 vector에도 있고 list에도 있음- remove()는 list에만 있음 - vector::erase() : capacity는 그대로지만 size는 줄어듦 (뒤에 있던 데이터는 앞으로 당겨짐)- list::erase() : 요소가 없어지면서 할당 메모리도 해제됨- list::remove() : 요소가 없어지면서 할당 메모리도 해제됨 - vector가 remove()를 사용하려면 Algorithm에 있는 stl의 remove()를 사용해야함list와 vector 모두 Algorithm의 remove를 사용하면 값은 사라지지만(객체 자체는 맨 뒤로 이동) 뒤의 데이터가 앞으로 당겨지기만 하고 그 이후 처리는 아무것도 안함, 요소의 갯수는 그대로=> vector는 size가 그대로이고 .. 2016. 8. 4.
임시객체 임시객체 : 객체를 인수로 사용하거나 반환할 때 임시로 생기는 객체 임시객체 생성 시점 인수로 사용할 때, 함수에서 반환할 때 cf. 임시객체를 인수로 사용시에는 컴파일러가 자동으로 최적화를 하여서 임시객체 다시 만들고 지우는 것 없이 그대로 전달 됨. ex. class CObj { public: CObj Func(CObj Obj) { return Obj; } }; void main(void) { CObj Obj; Func(Func(Obj)); } 함수 호출될 때 마다 지우고 삭제 하는 것 없이 반환된 임시 객체가 그대로 쓰임함수 호출 -> 임시객체1 생성(인수) ->임시객체2 생성(반환1) -> 임시객체 1 소멸 -> 반환 -> 함수호출(임시객체2가 그대로 레퍼런스 처럼 인수타고 함수로 들어감) -> .. 2016. 8. 2.
바인딩과 스코프 바인딩 : 이름(변수, 배열, 라벨, 절차 등)을 그것이 포함하는 것(메모리 주소, 데이터 형 또는 실제 값)에 연결하는 작업> 언어 설계시 : 연산자와 연산의 바인딩 > 언어 구현시 : 데이터 유형과 데이터 유형이 가질 수 있는 값의 바인딩(자료형) > 프로그램 작성시 : 알고리즘, 데이터 구조, 모듈 이름에 대한 바인딩 > 컴파일 시 : 변수와 데이터 유형 > 링크 시 : 메모리 내의 프로그램 전체 레이아웃을 확정(개별 모듈 ex. lib) > 로드 시 : 물리적 주소 선택 (C언어의 경우 정적변수) > 실행 시 : 변수에 메모리 값을 바인딩 - 정적 바인딩 : 프로그램 실행 이전, 이른 바인딩(early binding)> C언어에서 상수에 값을 바인딩 > C언어에서 함수의 정의에 함수 호출을 바인딩.. 2016. 8. 2.