1. 변수와 객체 (variable vs object)
#include <stack>
int main() {
int n = 0; // 변수
n = 10;
std::stack<int> s; // 객체
s.push(10);
s.push(20);
int n2 = s.top();
s.pop();
}
- 변수 (Variable)
=> 변하는 수
=> 메모리의 특정 위치를 가르키는 이름
=> 변수를 사용하면 메모리에 값을 읽거나 쓸 수 있다.
=> 언어가 제공하는 기본 타입(primitive type)의 인스턴스
- 객체 (Object)
=> 메모리를 할당하고 자신을 스스로 초기화 한다.
=> 상태와 동작을 가지고 있는 존재
=> 객체를 사용하면 해당 객체가 제공하는 다양한 서비스를 사용할 수 있다.
=> 사용자 정의 타입(User Define Type)으로 만든 변수
2. 프로그래밍 패러다임 (Programming Paradigm)
#include <stack>
int main() {
int n = 0; // 변수
n = 10;
std::stack<int> s; // 객체
s.push(10);
s.push(20);
int n2 = s.top();
s.pop();
}
2.1 프로그램이란?
- 명령형(절차적) 프로그래밍 패러다임 (C언어)
=> 프로그램은 컴퓨터가 수행할 명령어들의 나열이다.
=> 모든 프로그램은 main함수 부터 순차적으로 실행된다.
=> 제어문, 반복문, 함수 등을 사용해서 실행흐름을 변경할 수 있다.
- 객체지향 프로그래밍 패러다임 (C++, Java, C#)
=> 프로그램은 객체들과 객체들 사이의 메시지이다.
=> 문제를 해결하기 위해 필요한 타입을 찾아내고, 설계
=> 설계한 객체를 생성하고, 객체끼리 메시지를 주고 받으면서 문제를 해결하는 것
2.2 C++ 패러다임
- C++은 다중 패러다임(Multi Paradigm) 언어 이다.
=> 명령형(절차적) 프로그래밍 패러다임 지원
=> 객체 지향 프로그래밍 패러다임 지원
=> 일반화 프로그래밍 패러다임 지원 - 템플릿
=> 함수형 프로그래밍 패러다임 지원
3. C++ 표준과 stack
#include <iostream>
#include <stack>
int main() {
std::stack<int> s;
s.push(10);
s.push(20);
std::cout << s.top() << std::endl; // 20
s.pop();
std::cout << s.top() << std::endl; // 10
}
- STL
=> C++에서 제공하는 표준 라이브러리
=> Standard Template Library
- STL에서 제공하는 stack
=> <stack> 헤더
=> 클래스 템플릿으로 되어 있다.
- STL stack의 주요 멤버 함수
4. C++ 표준과 vector
#include <iostream>
int main() {
int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(int i = 0; i < 10; i++)
std::cout << x[i] << std::endl;
}
- C 배열의 단점 - 크기를 변경할 수 없다.
- STL vector
=> 배열과 유사하게 연속된 메모리를 사용하는 컨테이너
=> <vector> 헤더 파일
=> 배열과 동일한 방법으로 사용가능 - [] 연산 사용 가능
=> 크기를 조절할 수 있다. - resize 멤버 함수
#include <iostream>
#include <vector>
int main() {
//int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// std::vector<int> x; - 크기 지정 안함
// std::vector<int> x(10); - 10칸짜리 크기 지정
std::vector<int> x = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
x[0] = 10;
x.resize(20);
for(int i = 0; i < x.size(); i++)
std::cout << x[i] << std::endl;
}
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 생성자 (constructor) (0) | 2019.10.31 |
---|---|
[C++] 접근지정자 (0) | 2019.10.29 |
[C++] 객체지향 프로그래밍의 개념(1) (0) | 2019.10.29 |
[C++] 동적 메모리 할당, nullptr (0) | 2019.10.27 |
[C++] Explicit Casting (0) | 2019.10.25 |