728x90

같은 타입의 여러 객체를 저장하는 일종의 집합

컨테이너는 클래스 템플릿으로,

(컨테이너는..데이터를 저장하고 관리하기 위한 클래스)

컨테이너 변수를 선언할 때 컨테이너에 포함할 요소의 타입을 명시할 수 있다.

컨테이너에는 복사 생성과 대입을 할 수 있는 타입의 객체만을 저장할 수 있고

요소의 추가 및 제거를 포함한 다양한 작업을 도와주는 여러 멤버 함수를 포함하고 있다.

 

 

컨테이너의 종류

STL에서 컨테이너는

자료를 저장하는 방식

관리하는 방식에 따라 여러 가지 형태로 나뉠 수 있음

 

STL 컨테이너는 크게 다음과 같이 세 가지 유형으로 구분됨

 

1. 순차(시퀀스) 컨테이너(sequence container)

데이터를 선형으로 저장하며, 특별한 제약이나 규칙이 없는 가장 일반적인 컨테이너

 임의의 위치에 삽입, 삭제가 가능합니다.

 데이터를 순차적으로 저장합니다.

 일반적인 자료구조와 동일한 형태

 자료를 입력한 순서대로 저장하기 떄문에 저장, 검색, 알고리즘에 불리

 => 많지 않은 자료, 검색 속도 중요하지 않을 때 사용

 

 

vector(가변배열), deque(덱,앞뒤로 넣고 빼는큐), list(양방향 연결리스트), forwad_list(단방향 연결리스트)

 

2. 연관 컨테이너(associative container)

데이터를 일정 규칙에 따라 조직화하여 저장하고 관리하는 컨테이너

검색에 유리

 

set, multiset, map, multimap

 

3. 어댑터 컨테이너 (adapter container)

결함과 명료성을 위해 인터페이스를 제한한 시퀀스나 연관 컨테이너의 변형

단, 반복자를 지원하지 않으므로 STL 알고리즘에서는 사용할 수 없습니다.

 

 

stack, queue, priority_queue

 

출처

http://tcpschool.com/cpp/cpp_container_intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com


출처: https://heekim0719.tistory.com/314 [별토끼 DEVLOG]

 

[C++] STL Container 개념 및 특징

[C++] STL Container 개념 및 특징 STL(Standard Template Library) 란? C++의 템플릿을 이용해 표준으로 정리된 라이브러리 STL의 구성 요소 1. 반복자 :STL 컨테이너에 저장된 원소들을 가리키는 포인터 2. 컨테..

heekim0719.tistory.com

 

728x90
728x90

출처: https://shjz.tistory.com/13 [밤머리 이야기]

 

[C++] STL : Standard Template Library 1 -표준 템플릿 라이브러리란?

STL이 무엇인지 알고 계십니까? C++를 주 프로그래밍 언어로 사용하고 계신 분들은 알고 있으리라 생각합니다. STL은 C++ 언어의 '표준 템플릿 라이브러리 (Standard Template Library) '의 약자입니다. STL을

shjz.tistory.com

STL

자료구조와 알고리즘 모음 라이브러리

STL은 템플릿으로 만들어짐 

 

 

 

[질문] C++로 할 수 있는 프로그래밍 스타일은 절차적 프로그래밍, 객체 지향 프로그래밍만 있을까요?

[답] 아니오. Generic Programming 도 가능합니다.



Generic Programming은 한국에서는 보통 '일반적 프로그래밍'이라고 이야기 합니다. 저도 처음에는 그렇게 들었습니다. 

 

그러나 이것은 잘못된 표현이지 않을까 생각합니다. 영어 사전을 보면 Generic 이라는 것은 '총칭(總稱)적인' 이라는 뜻도 있는데 이것이 '일반적'이라는 단어보다 더 확실하며 제가 2004년에 일본에서 구입한 "C++ 설계와 진화(Bjarne Stroustrup 저)"라는 일본 번역서에도 Generic은 총칭으로 표기하고 있습니다. 

 

클래스는 아시는 바와 같이 멤버 변수와 멤버 함수로 이루어져 있습니다. 그리고 멤버 함수도 그 내용은 저의 생각에 의해 변수들이 조작으로 되어 있습니다. 

 

'암소는 동물이다'라는 식으로 C++ 언어에서 총칭을 하는 것은 변수의 타입(type)을 총칭화 하는 것입니다

 

 

STL의 구성 요소

1. 반복자 :STL 컨테이너에 저장된 원소들을 가리키는 포인터

2. 컨테이너 : 데이터를 저장하고 관리하기 위한 클래스 (vector, list, map, deque 등..)

3. 알고리즘 : STL에서 제공하는 함수 (ex. 정렬, 검색 등..)



출처: https://heekim0719.tistory.com/314 [별토끼 DEVLOG]

 

728x90
728x90

스택

후입선출(가장 늦게 넣은 데이터가 가장 빨리 나가는 것)

객체들의 집합소, 데이터를 기록하는 구조

비어있는 스택에서 원소 추출하려하면 stact underflow

스택 넘치는데 스택 추가하려고 하면 stack over

집합에서 가장 오랜 시간 존재했던 원소를 삭제

선입선출( 가장 먼저 넣은 데이터가 가장 빨리 나간다)

 

프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야함.

프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.

프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지

1. 코드code 영역->실행할 프로그램의 코드저장되는 영역,cpu가 여기서 명령어 가져가서 처리함

2. 데이터data 영역->프로그램의 전역변수와 정적 변수가 저장되는 영역, 프로그램 시작과 함께 할당되고 종료되면 소멸

3. 스택stack 영역->함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 곳,함수호출시 할당되고 종료시 소멸

4. 힙heap 영역->사용자가 직접 관리할 수 있는,그래야하는 메모리 영역,사용자에 의해 메모리공간이 동적할당되고 해제됨. 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨.

 

 

--수업때 얘기는 밑에--

 

 

스택은 컴파일러가 돌기 전 단계.

힙은 구동된 다음에 메모리 반환 해제가 됨

스택 영역에 메모리 선언하면 해제도 못함

 

함수내부는 stack

헤더파일은 heap

 

선언할 때 함수에 많이 하면 터진다..스택이라서..

헤더에 해라..

 

 

 

 

출처

https://hwan1402.tistory.com/110

 

스택(Stack)과 힙(Heap) 차이점

메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제

hwan1402.tistory.com

 

728x90
728x90

템플릿(template)은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와 준다. 함수나 클래스를 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 동작할 수 있게 한다. 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 틀.

출처: https://blockdmask.tistory.com/43 [개발자 지망생]

 

템플릿은 함수, 클래스 붕어빵 만드는 붕어빵 틀

재료는 객체타입

 

템플릿의 종류는 함수 템플릿과 클래스 템플릿의 두 가지가 있다.

 

함수 템플릿

여러 다른 자료형(int, long, float, double, class... )을 템플릿 인자 ('<...>' 안에 들어가는)로 받아, 함수 내부에서 활용할 수 있도록 한 것이다. 다시 말하면, 여러 다른 자료형에 대하여 같은 역할을 하는 하나의 함수 계열을 하나의 템플릿으로 표현할 수 있다는 점이다. 

클래스 템플릿

클래스 템플릿은 클래스를 템플릿 변수에따라 생성할 수 있게 하는 기능이다. 클래스 템플릿은 컨테이너의 용도로 많이 쓰인다. 

 

 

 

템플릿 특수화

특정 타입, 다른 기능수행 즉 특수화하게 하려고 따로 템플릿 정의해 만드는거

 

템플릿 만들 때는 템플릿 선언 

template <typename T>

T라는 타입에 템플릿 선언한다는 뜻 , 

myFunc(1,3)

여기 맞게 값넣으면 알아서 함수구체화됨

"이렇게 템플릿의 구체화는 컴파일 타임에 필요한 타입에 대해서만 구체화를 하게된다. 위코드에서 구체화된 두 개의 함수 이름은 같고 시그니처만 다르므로 서로 오버로딩 관계다. 색이 다른 붕어빵~"

 

 

 

둘의 차이점

클래스 템플릿 사용할 때 반드시 타입 명시해줘야 함.

auto obj = MyClass<int>(3):

 

3써서 타입추론이 자동이뤄지는거 아닐까? 왜 타입을 강제지정할까?

 

[클래스 템플릿 구체화에 대한 이해]

(객체생성) 인스턴스화가 되기 전(=생성자가 호출되기 전)에 먼저 객체를 위한 메모리가 할당되어야 하는데

메모리 할당을 위해서는 

생성자에 전달되는 인수의 타입을 미리 알아야함! (여기서 객체에서 사용되는 타입은 클래스 멤버 변수의 타입을 말함.)

즉 클래스의 생성자가 호출되기 전에 객체를 위한 메모리가 할당되어 있어야 한다는 거~

 

 

 

 

 

 

 

 

출처: 

<대박적 설명>

https://thrillfighter.tistory.com/408

 

C++ 템플릿(template) 이해하기

템플릿을 사용하여 프로그래밍 하는 것을 일반화(Generic) 프로그래밍이라고도 한다. 개인적으로 C++을 제대로 공부하기 위한 첫 번째 관문은 템플릿(template) 아닐까 생각한다. 템플릿을 알아야 S

thrillfighter.tistory.com

https://ko.wikipedia.org/wiki/%ED%85%9C%ED%94%8C%EB%A6%BF_(C%2B%2B)

728x90
728x90

c(순차적 프로그램)에서 확장됨

c++객체지향프로그램

 

객체지향프로그램: 자바,씨샵,씨플플 

 

객체지향

객체의 속성, 객체의 동작(method)

객체 묶어둔게 클래스

 

 

cout은 객체

객체에 대한 것을 어디서 정의함

 

화면출력할 때 std::cout 사용

입력은 std::cin

 

ios에 입출력 라이브러리의 모든 클래스 여기 다들어있음

 

namespace

여러개의 라이브러리 클래스들이 중복되어있을 수 있음 이들을 구분하여 중복되지 않도록 하는 키워드를 의미

 

 

함수나 클래스 작성시 소속된 네임스페이스를 일일이 기술하는 작업 번거로워서

네임스페이스 생략하기 위해 using문 사용

>  using namespace 네임스페이스명;

 

https://youtu.be/JoAdRwJi-GI

728x90
728x90

절차지향 프로그래밍, 여기에서 개선해서 객체지향 나온 거래 둘 다 함수 사용하지만

정리정돈 도구인 객체가 존재한다가 둘의 큰차이

 

함수를 만들어서 함수 안에 코드 넣어서 깔끔하게 만들어줬음

근데 이제 함수가 또 많아지면?

 

서로 연관되어있는 함수, 변수들을 객체라는 것으로 그루핑. 박스에 넣는 것처럼

그 이름 도 새로 지어. 연관된 함수들을 다른 함수랑 분류하고 그룹지어~~

그게 바로

 

객체지향(프로그래밍 방법론)

object oriented programming

 

만들어진 틀(클래스) 안에 여러 객체 묶어줘서 

번거롭지 않게 한번에 실행할 수 있음

 

 

 

 

상속은 물려받는 것

인터페이스는 장착하는 것

 

 

 

객체지향- 은닉성 특징, 내부구조는 감춰두고 외부구조에서 조작할 수 있는애들만

public으로 공개

 

 

 

 

 

https://youtu.be/vrhIxBWSJ04

https://youtu.be/dy9yQIx38u8

 

728x90

+ Recent posts