list, stack, queue 등 6/2 1 C++ 재귀함수의 기본,

수업 15일째! ‘수업을 시작한 지 2주 정도 지난 15일 동안 개발에 발을 들여놓고 느낀 건 첫째 주)인가. 개발할 수 있을 것 같은데?둘째주)여기가 지옥인지 현재)지옥날씨 이상없음! 햇빛이 쨍쨍^^정도라 할 수 있겠다

<오늘 배운 것> 1. 재귀 함수 2. list 3. windows 데스크톱 마법사에서 무엇을 만드는 4. 스택 5. Queue

재귀함수 영어 문법을 배우면 누구나 들어봤던 ‘재귀’라는 단어 영어에서 ‘재귀대명사’는 myself, yourself 등 명사가 자신을 지칭할 때 쓰는 말이다.그럼 재귀함수는 무엇인가?어떤 것을 정의할 때 자기 자신을 참조하는 함수를 의미한다.

Print 함수를 선언한 후에 자기 자신을 참조시켜 보았다

그러면 이렇게…메모리가 허락하는 한 끊임없이 출력되는 Print() 함수를 볼 수 있는 void Print()가 그 안에 있는 Print()를 참조하고, 그리고 참조된 Print()는 다시 void Print()를 호출하여… 그렇게 계속 Print() →Print() →가뎀() 참조가 반복되는 것이다.

그래서 이러한 오버플로를 방지하기 위해서는 종료조건이 반드시 포함되어야 한다(마치 while문으로 종료조건을 붙이듯이).

저는이렇게종료조건을달았다는게아니고,강사님은이렇게조건을달아주신아주가벼운예제였습니다.

목록 시퀀스 컨테이너의 한 종류 list의 기본적인 특징은?시퀀스 컨테이너의 일종이기 때문에 순서를 유지하는 구조-노드 베이스 컨테이너-이중 연결 리스트라고 생각하면 된다.다른 시퀀스 컨테이너인 vector, deque와는 달리 멤버 함수로 정렬(sort, merge), 연결(splice)이 있다.- 원소를 탐색할 때 임의 접속 반복자 (at() [ ] 는 불가능하며, 쌍방향 반복자 (++, –) 를 이용하여 탐색한다. – push_front ( ), pop_front ( ), pop_back ( ) 멤버 함수를 이용하여 list 의 양끝에서 삽입, 삭제가 가능하다. – push_back ( ), pop_back ( ) 멤버 함수를 통해 list 의 삽입, 삭제가 가능하다.출처 : https://blockdmask.tistory.com/76 [개발자 지망생] 예제만 「애벌레」를 보는 것만으로는 이해할 수 없고, 이것을 왜 사용하는지 알 수 없어서, 잘 정리된 블로그에서 이론을 조금 공부했으므로, 위의 출처에 기재된 링크에 접속하면 더 자세한 정보가 나온다.

그리고 예제를 스윽 보면?이해하기 쉬운 나는 댓글이 거의 없고, 댓글이 없고, vector와 사용 형태가 매우 비슷함을 알 수 있다–그런데 굳이 vector와 구분한 이유는?나도 아직 잘 모르겠다

결과값은 이렇게 표시된 push_back으로 출력된 10~50개의 데이터와 push_front를 통해 전방에서 쌓여진 200,100

그럼 erase 함수를 함께 보는 목록 예제

이번에는 반복자가 2개나 등장하는 push_back 함수와 반복자(iterator)선언까지는 이전에 공부했던 것이고, 혼동하기 쉬운 부분을 들어보면 반복자 iter2를 선언한 후에 +iter1;+iter1; 여기에서 조금 어려울 수 있지만 그림을 보면 이해하기 쉬울 것이다.먼저 iter1은 lt1이라는 list의 첫부분부터 시작해서

push_back 함수를 통해 입력한 10, 20, 30, 40, 50 손이 떨려서 그림을 잘 그릴 수 없지만 어쨌든 이렇게 표현할 수 있다.어쨌든 그렇게 30을 지워(iter2 = lt1. erase(iter1)erase는 항상 다음 값을 리턴하므로

이런 결과치가 나올

지금 쓰고 있는 것은 erase함수이지만 insert(위치 값);특정 위치에 희망의 값을 넣고 remove( 없애다값);괄호 안에 있는 해당 데이터를 모두 삭제 remove_if;조건에 의한 삭제…등등이 있다

(21.07.03추가) 죽지 않고 살아 돌아온 예쁜 망령!^^list에서 자주 사용되는 함수를 정리에 온

생성자 list lt는 컨테이너 list lt(n)lt는 기본 값으로 초기화된 n개의 원소를 갖는다.list lt(n, x)lt는 x값으로 초기화된 n개의 원소를 갖는다.list lt(lt2)lt는 lt2컨테이너의 카피이다.list lt(a, b)lt은 반복자 구간[a, b]로 초기화된 원소를 갖는다.

함수 lt.assign(n, x)lt에 x값으로 초기화된 n개의 원소를 할당 lt.assign(a, b)lt를 반복자 구간(a, b)에 배당 lt.back()lt의 마지막 원소를 참조 iter=lt.begin()iter는 lt의 첫번째 원소를 가리키는 반복자 lt.clear()lt의 모든 원소를 제거 lt.empty()lt이 비어 있는지 체크 iter=lt.end()iter는 lt의 끝을 가리키는 반복자 iter=lt.erase(p)p이 가리키는 원소를 제거하고 iter는 다음에 있는 원소를 말한다.iter=lt.insert(p, x)p가 말하는 위치에 x값을 삽입하고 iter는 삽입한 원소를 가리키는 반복자 lt.insert(p, n, x)p가 말하는 위치에 n개의 원소를 삽입하고 값은 xlt.insert(p, a, b)p이 가리키는 위치에 반복자 구간(a, b)의 원소를 삽입 max=lt.max_size()lt가 들어갈 수 있는 최대 원소의 개수를 max에 반환 lt.merge(lt2)lt에 합병 정렬했을 때에 원래 정렬 lt.merge(lt2, pred)lt으로 정렬한다.push_back(x)lt의 마지막에 x를 추가 lt.push_front()lt앞에 x를 추가 iter=lt.rbegin()iter는 lt의 반대 순서 지열 최초의 원소를 가리키는 반복 글씨 lt.remove(x)x원소를 모두 제거 lt.remove_if(pred)pred가 “진정”인 원소를 모두 제거 lt.size()lt원소의 개수 lt.sort(pred)lt의 모든 원소를 pred기준으로 정렬 lt.splice(p, lt2)p이 가리키는 위치에 lt2의 모든 원소를 자르는 것. swap(lt2)lt와 lt2의 원소를 교환 lt.unique()인접한 원소의 값이 같다면 유일하게 원소의 순차적으로 줄을 한다.

리스트 함수 종류

스택은 시퀀스 컨테이너의 하나로 벡터나 목록처럼 정보를 쌓는 데 사용되는데 이와 다른 특징이 있다면 후입처출이라는 것.

출처 : https://m.blog.naver.com/crm06217/221848357621 보통 오른쪽 끝만 열려있는 상자에 비유되긴 하지만 우리 강사 선생님은 아르바이트에 비유해서 제일 늦게 들어간게 제일 먼저 나오면… 더럽지만 최고의 예시여서 필기하는 내 자신이 너무 미웠다.

스택의 기본 함수 1. 추가 및 삭제 push(); top에 원소 추가 pop(); top에 있는 원소 삭제 2. 조회 top(); top(스택의 최후미)에 있는 원소 반환 3. 그 외 emptyis Fush(); 스택이 비어 있으면 true, 아니면 false를 반환 size(); top( )

기본 함수를 바탕으로 예를 살펴보면

대략 이렇게 쓰여져 있는 것을 알 수 있다.

push 함수를 통해 넣은 1이라는 결과치가 가장 위에 있고, pop을 통해 두 개를 지웠으니 size도 하나라는 것(※) size는 stack 안에 할당된 원소의 개수를 의미하는 벡터에게 사용되는 함수와 비슷하다= https://blog.naver.com/shineetm0718/222402807350 수업 13일째? 14일째? 오늘 배운 것은 어렵지 않은 편! 이라고 느꼈는데 왜 등장.. 갑자기.. 벡터에게..

Queue1. 큐의 기본구조 [C++자료구조] 큐(Queue)+덱(Deque): 네이버 블로그(naver.com)

2. 사용방법 [C++] queue container 정리 및 사용법 (tistory.com)

아직 잘 몰라서 다른 블로거씨가 보내준 글을 첨부상자가 설명이 너무 잘 되어 있어서 이마를 때렸다.

몸이 너무 안 좋으니까 오늘은 여기까지 하고 인강을 들으러 가야겠다

error: Content is protected !!