공hannah부
C++기초, C++ STL 본문
Basic C++
입출력 스타일
- C 스타일과 C++ 스타일을 모두 지원한다.
- C 스타일
int a;
scanf("%d", &a);
printf("%d", a);
- C++ 스타일
int a;
cin >> a;
cout << a << "hello";
문자열
- C 스타일: 끝에 NULL 존재
char s[100] = "I Love You";
- C++ 스타일: 끝에 NULL 없음
string s = "I love you";
string a = "I ";
string b = "love you ";
cout << a + b; //I love you
cout << b + a; //love you I
cout << a.size() << ' ' << b.size(); //2 8
if (a == b) cout << "same";
else cout << "different"; //different
cout << b[2]; // v
C++ STL
- pair: 두 데이터를 하나로 묶어줌
- pair<int, int>를 하나의 자료형이라 여기면 된다
- p[i].first: 앞부분, p[i].second: 뒷부분
- sort 함수: p[i].first를 기준으로 오름차순, 같다면 p[i].second를 기준으로 오름차순 정렬
int main() {
pair<int, int> p[10];
for (int i = 0; i < 10; i++)
p[i] = { (i - 3) * (i - 7), i };
sort(p, p + 10); //p번째부터 p+10번째까지 오름차순으로 정렬
for (int i = 0; i < 10; i++)
cout << p[i].first << ' ' << p[i].second << "\n";
}
- tuple: n개의 데이터를 하나로 묶어줌 (pair의 확장 버전)
- pair의 first, second = tuple에서는 get<0>(변수명), get<1>(변수명), ...
- tie: pair나 tuple로 묶인 원소들을 한번에 가져올 수 있다
int main() {
tuple<int, char, string> t(1, 'I', "love you");
int a; char b; string c;
tie(a, b, c) = t;
cout << a << ' ' << b << ' ' << c; //1 I love you
cout << get<0>(t) << ' ' << get<1>(t) << ' ' << get<2>(t);//1 I love you
}
- vector: 알아서 크기를 조절해주는 배열 (array와 매우 비슷하다)
int main() {
vector<int> v;
vector<int> v2(10); //=int v2[10];
vector<int> v3(10, 0); //10개의 모든 공간 0으로 초기화
vector<vector<int>> v4; //2차원 배열
vector<vector<int>> v5(10, vector<int>(10, 0)); //10*10배열 0으로 초기화
}
int main() {
vector<int> v = { 1,2,3 };
v.pop_back(); //뒷 값 빼기 {1,2}
v.push_back(4); //뒤에 4 넣기 {1,2,4}
cout << v.front(); //1
cout << v.back(); //4
v.clear();
cout << v.size(); //0
}
더 알면 좋은 것들
- reference (참조)
- 개체의 주소를 보유
- 개체의 복사본을 만들지 않으므로 더 좋은 성능을 보임
- call by value vs call by reference
- call by value: 실제 값 복사해서 전달 → 원본 바뀌지 않음
- call by reference: 실제 값의 주소를 전달 → 원본 바뀜
- auto: 변수의 형식을 추론한다.
int main() {
vector<int> v = { 1,2,3,4,5 };
for (auto i = v.begin(); i != v.end(); i++) //i int로 추론
cout << *i << ' ';
}
- range-based for loop (범위 기반 for 문)
- for(for-range-declaration : expression) {statement}
- expression에 있는 각각의 원소에 대해 statement를 반복한다.
- index 정보가 없다
int main() {
vector<int> v = { 1,2,3,4,5 };
for (auto x : v) cout << x << ' '; //1 2 3 4 5
}
- #include<bits/stdc++.h> : 여러개의 헤더 파일들을 한 곳에 모아 둔 헤더 파일
- BOJ, Codeforces, ArtCoder 등에서 모두 잘 작동됨
- 로컬환경에서는 대부분 해당 헤더 파일이 없으니 따로 설정해 주어야 함
'공부 > 알고리즘' 카테고리의 다른 글
거듭제곱 (0) | 2023.08.03 |
---|---|
최대공약수(gcd)와 최소공배수(lcm) / 유클리드 호제법 (0) | 2023.08.03 |
선형 자료 구조 (배열, 연결 리스트, 스택, 큐, 덱) (0) | 2023.07.31 |
비교 함수 / STL sort (0) | 2023.07.31 |
정렬 (버블정렬, 삽입정렬, 퀵정렬, 병합정렬) (0) | 2023.07.31 |