본문 바로가기

C++

(29)
[C++] 벡터(vector)와 메소드들(erase, insert) 그리고 binary search(lower_bound, upper_bound) ↓[C++] 벡터(vector)와 메소드들(push_back, front, back, begin, end, swap, size, empty) 바로가기 https://swblossom.tistory.com/26 [C++] 벡터(vector)와 메소드들(push_back, front, back, begin, end) 표준 템플릿 라이브러리(STL : Standard Template Library) 안에 컨테이너(container), 이터레이터(iterator), 알고리즘(algorithm)템플릿 등을 제공한다. 컨테이너는 배열과 같이 여러 개의 값을 저장할 수 있는.. swblossom.tistory.com 벡터에 insert 메소드가 있다. insert 메소드는 다른 벡터의 범위 값을 삽입할 때 사용한다...
[C++] sort 함수로 정수, 문자열 오름차순 내림차순 정렬하기 sort 함수란? sort 함수는 C++ 'algorithm' 헤더 파일에 있는 함수입니다. sort 함수는 정렬 기능을 가진 함수입니다. qsort라는 함수도 정렬 기능을 하지만 sort함수가 더 빠릅니다. 표준 라이브러리에 있는 만큼 강력하기 때문에 사용하는 게 좋다고 합니다. 함수의 원형입니다. //default template void sort (RandomAccessIterator first, RandomAccessIterator last); //custom template void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp); 쉽게 표현하면 다음과 같습니다. void sort(첫번째주소, 마지막주소, 정렬..
[C++] 스택 풀기(Stack unwinding) 함수가 함수를 호출하면 매개 변수, 자동 변수 등 추가 정보가 모두 스택 메모리에 쌓인다. TestFunc3() -> TestFunc2() -> TestFunc1()을 순서대로 호출하였다고 가정하자. TestFunc1()에서 예외가 발생하여 TestFunc3() 초기 함수가 불리기 전으로 돌아가야 한다면 스택 메모리에서 쌓여 올려진 모든 메모리를 반환하도록 해야 한다. 예외 발생이 없는 경우 TestFunc1()이 실행되고 TestFunc1() 함수가 끝나면 블록을 벗어나면서 TestFunc1() 함수가 자동으로 스택 메모리에서 사라진다. 그리고 순차적으로 TestFunc2(), TestFunc3() 함수가 스택 메모리에서 사라질 것이다. TestFunc3() start TestFunc2() start ..
[C++] 예외 처리(try, throw, catch) 예외 처리란? 예외 처리는 어떤 일을 시도하다가 문제가 생기면 예외 처리를 하는 것이다. 프로그램이 작동되다 보면 예외는 존재하기 만련이다. 예외 처리는 문제 발생 시 문제를 집어던지고 받는 쪽에서 해결하는 식으로 흘러간다. #include using namespace std; int main() { int a = 100, b; cout > b; try { //0으로 나눌 수 없으므로 0을 던짐 if (b == 0) throw b; //예외가 발생하지 않는다면 실행할 구문 cout
[C++] 스마트 포인터 - shared_ptr과 unique_ptr shared_ptr은 기존의 auto_ptr과 달리 포인팅 횟수를 계산하여 0이 되면 대상을 삭제한다. auto_ptr은 한 객체에 두 개의 포인터로 포인팅 하면(얕은 복사) 하나는 소멸되었다. 그러나 shared_ptr은 한 객체에 두 개의 포인터로 포인팅 하면 포인팅 카운트 값은 2이다. 하나의 포인터가 소멸하더라도 카운트 값이 1 감소하지만 대상 객체는 소멸하지 않는다. shared_ptr 배열 삭제 예) #include using namespace std; class myClass { public: myClass() { cout
[C++] 스마트 포인터 - auto_ptr auto_ptr은 동적 할당한 인스턴스를 자동으로 삭제한다. #include using namespace std; class myClass { public: myClass() { cout
[C++] friend 함수와 friend 클래스 friend 예약어를 함수나 클래스 선언 앞에 사용할 수 있다. 단, 반드시 클래스 내부에서 선언되어야 한다. 상속이 상하인 수직관계라 한다면 friend를 사용하면 수평관계이다. friend로 선언한 함수나 클래스는 접근 제어 지시자의 영향을 받지 않는다. friend 함수 예) #include using namespace std; class myClass { public: myClass(int param) : num(param) {} int getNum() const { return num; } void setNum(int param) { num = param; } //friend 함수 선언 friend void printNum(const myClass&); private: int num = 0; }..
[C++] 벡터(vector)와 메소드들(push_back, front, back, begin, end) 표준 템플릿 라이브러리(STL : Standard Template Library) 안에 컨테이너(container), 이터레이터(iterator), 알고리즘(algorithm)템플릿 등을 제공한다. 컨테이너는 배열과 같이 여러 개의 값을 저장할 수 있는 구성단위이다. vector 템플릿 객체를 생성하려면 사용할 데이터형을 나타내기 위해 표기를 사용한다. vector 생성 간단 예) vector a(10);//int형 벡터 10개 생성 vector b(100);//double형 벡터 100개 생성 vector 생성 방법은 여러 가지가 있다. #include #include //vector 사용 using namespace std; int main() { //비어있는 vector 생성 vector a; //..