C
입력 반복자를 이용하여 노드를 삽입시 많이 사용되는 반복자가 insert_iterator이다. 이 반복자를 이용하면 원하는 위치에 노드를 삽입하려 할 때 편하게 작업을 수행할 수 있다. 반복자의 사용 예를 보면 다음과 같다. #include <iostream>#include <list> using namespace std; int main(){ // 스트링을 저장할 리스트 선언 및 첫 번째 스트링 저장 list<string> strList; strList.push_back(“AAA”); // 리스트에 데이터를 입력하기 […]
리스트는 순차형 컨테이너이면서 포인터 연산을 수행하기 때문에 특정 노드를 바로 찾아가는 키의 개념이 없다. 따라서 원하는 노드를 찾고자 할 때는 반복자를 이용하여 처음부터 차례대로 노드들을 체크해보아야 한다. 리스트는 이러한 단점에도 불구하고 인의의 노드의 삽입과 삭제가 무척 빠르고 효율적이기 때문에 활용가치가 무척 높은 자료구조이다.
벡터는 원소의 상수 레퍼런스를 반환하는 메소드를 제공한다. 이 메소드를 이용하면 벡터 속에 있는 데이터를 바로 얻을 수 있다. 이러한 메소드에는 front(), back() 등이 있다. 다음은 front()와 back() 메소드의 간단한 사용 예를 보여주고 있다. strVec.push_back(“A”); // 벡터 내부: AstrVec.push_back(“B”); // 벡터 내부: A BstrVec.push_back(“C”); // 벡터 내부: A B C cout << “시작: ” << strVec.front() […]
디폴트로 호출되는 핸들러는 비정상적인 종료가 발생한다는 메시지만을 남기고 시스템을 종료시키는 역할을 수행한다. 이때 아무런 메시지를 남기지 않고 시스템이 종료되기를 원한다면 메모리 핸들러가 호출되지 않도록 만들면 된다. 그러려면 다음과 같이 set_new_handler 메소드를 NULL 파라미터와 함께 호출하여 핸들러의 실행을 막으면 된다. set_new_handler(NULL); set_new_handler 는 new.h 파일을 include 해야 사용할 수 있다. 만일 디폴트 핸들러가 아닌 개발자가 지정한 […]
메모리를 동적으로 할당한 뒤에 메모리를 해제시키지 않으면 생성된 메모리는 계속해서 시스템에 남게 된다. 따라서 해당 메모리의 사용이 끝나면 delete나 free를 통하여 메모리를 해제시켜야 한다. 예를 들어 다음 메소드의 경우 메소드가 실행될 때마다 메모리를 새오 할당하게 된다. void allocateMem(void){ AClass *aClass = new AClass(); aClass->aMethod();} 메소드의 실행이 끝나도 aClass 객체는 메모리에 남게 되는데, aClass 객체를 접근할 […]
Recent Comments