프로그래밍/C,C++
-
[C/C++] lower_bound, upper_bound, binary_search 사용법프로그래밍/C,C++ 2021. 1. 15. 00:47
배열에서 특정한 수를 찾거나, 특정한 수가 몇 개 있는지, 좌표 압축 중복 제거 등에 자주 사용 #include #include #include // lower_bound와 upper_bound는 헤더 안에 존재 using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int arr[] = {40, 30, 30, 20, 40, 10}; vector v(arr, arr + 6); cout
-
[C/C++] StringStream 사용법 (문자열 나누기)프로그래밍/C,C++ 2020. 11. 14. 20:07
// C++ 에서는 split 메서드가 따로 없어서 이와같이 구현해야 한다. #include using namespace std; vector split(string s, string d) { // 입력값, 구분자 vector res; long long pos = 0; string token = ""; while ((pos = s.find(d)) != string::npos) { token = s.substr(0, pos); res.push_back(token); s.erase(0, pos + d.size()); } res.push_back(s); return res; } int main() { string s = "안녕하세요 숭황이는 멍청이 해삼이에요!"; string d = " "; vector v ..
-
[C/C++] STL Map, Set, Multiset 사용법프로그래밍/C,C++ 2020. 9. 22. 16:39
Map 인덱스로 다양한 자료형을 사용할 수 있음 key-value가 한쌍인 트리 구조 (레드 블랙 트리로 구현되어있음) key는 중복 허용을 하지 않음 key를 기준으로 정렬된 상태이기 때문에 검색 속도가 빠른 게 장점 key-value를 같이 쓰면서, 검색을 빨리해야 하는 경우 사용 /* STL Map 사용법 */ #include #include using namespace std; int main(void) { map M; // Map 선언 map::iterator it; // iterator를 통해 Map에 접근 M['A']=3; // key : A - value : 3 M['A']=5; // key는 중복허용이 안된다! 따라서 key 'A'의 value가 5로 갱신 M['B']=2; M.inser..
-
[C/C++] STL Stack, Queue 사용법프로그래밍/C,C++ 2020. 9. 22. 15:49
1. 스택(Stack) 선입후출, FILO(First In Last Out) DFS에서 많이 사용됨(실행순서를 기록해야할 때 등) /* STL Stack 사용법 */ #include #include // 반드시 선언 using namespace std; int main(void){ stack S; // 스택 선언 S.push(10); // 스택 값 push S.push(-3); S.push(15); printf("%d\n",S.top()); // 스택 맨 위의 값 리턴 : 15 printf("%d\n",S.size()); // 스택의 크기(원소의 개수) 리턴 while(!S.empty()) { // 스택이 비어있는지 확인 S.pop(); // 스택 값 pop } } ※ Stack이 비어있는데 top() ..
-
[C/C++] map 자료구조를 이용한 문자열 문제 해결프로그래밍/C,C++ 2020. 9. 2. 14:35
/* 알파벳의 개수 구하기 */ #include #include // map 자료구조를 사용하기 위한 헤더파일 선언 using namespace std; int main(void) { ios_base::sync_with_stdio(false); freopen("input.txt","rt",stdin); map ch; // key-value 형태의 자료구조 map::iterator it; // map 접근자 char a[100]; cin>>a; for(int i=0;a[i]!='\0';i++) { ch[a[i]]++; // key로 접근하고 value값을 1 증가 } for(it=ch.begin();it!=ch.end();it++) { cout
-
[C/C++] STL Vector 사용법프로그래밍/C,C++ 2020. 5. 8. 00:38
Vector 배열과 거의 동일한 기능을 수행하는 자료구조 배열과 마찬가지로 원소가 메모리에 연속하게 저장되어 있기 때문에 O(1) 시간으로 원소에 접근 가능 배열과 다르게 크기를 자유자재로 늘이거나 줄일 수 있다는 장점이 있음 => 가변 배열 그래프의 인접리스트를 구현할 때 많이 사용 vector a; 비어있는 벡터 a 생성 vector a(10); 0으로 초기화 된 크기가 10인 벡터 a 생성 vector a(10,1); 1로 초기화 된 크기가 10인 벡터 a 생성 vector a; 비어있는 2차원 벡터 a 생성 vector a(10, vector(10)); 0으로 초기화 된 10x10 2차원 벡터 a 생성 vector a(10, vector(10,1)); 1로 초기화 된 10x10 2차원 벡터 a 생..