1. vector
#include 선언
vector vec; //빈 벡터 선언
vector<int> a(10); //int형 벡터 10개 선언
vector <int> b = { 0, 1, 2 }; //이렇게 초기화된 벡터 선언
vec.push_back(넣을 값) //push_back으로 넣기
vec.pop_back()
vec.size() //벡터 요소 개수
vec.swap(vector객체) //두 벡터의 내용을 교환(교체)
vec.empty() //벡터가 비었는지 여부를 반환
vec.at(index) //index번째 요소에 접근
vec.front() //벡터의 첫 번째 요소를 반환
vec.back() //벡터의 마지막 요소를 반환
vec.begin() //벡터의 첫 번째 요소 가르킴
vec.end() //벡터의 마지마가 요소 가르킴
#include
sort(vec.begin(), vec.end()); //오름차순 정렬
sort(vec.begin(), vec.end(), greater()); //내림차순 정렬
* 값이 존재하는지 알아보기
if(find(v.begin(), v.end(), 0) == v.end()) { // vector내에 0이 존재하지 않음
- string 값 존재에도 사용 가능
"asdf".find("asd") == 0 //찾음
2. 해시 맵 (unordered_map)
#include <unordered_map>
unordered_map<string, int> hash_map;
for (auto pair : hash_map) { if (pair.second > 0) { return pair.first; } } //auto를 사용해 pair에 접근이 가능
char a;
isupper(a) / islower(a)
toupper(a) -> 숫자값으로 나옴
char(toupper(a)) -> 문자값으로 나옴
int[] something
for(int index : something){} // for each문 사용
#include <string>
int num = stoi(str);
string str = to_string(num);
3. max
#include <algorithm>
int answer = max (1, 2);
int answer = max ({1, 2, 3});
4. Set
중복이 허용되지 않는 데이터를 저장할 수 있는 컨테이너
자동으로 오름차순 정렬되어 저장됨 (기본 설정일 때)
내부적으로 이진 탐색 트리 (RB-tree) 기반으로 동작
set<int> s;
// 값 추가
s.insert(10);
s.insert(5);
// 값 존재 확인
if (s.count(5)) {
cout << "5 있음";
}
// 값 삭제
s.erase(5);
// 전체 순회
for (int x : s) {
cout << x << " ";
}
🧠 언제 사용하는가?
중복 제거 | vector보다 훨씬 간단하고 효율적으로 중복을 막을 수 있음 |
정렬된 자료 유지 | insert()만 해도 자동 정렬 |
특정 값이 있는지 확인 | s.count(x) 또는 s.find(x)를 통해 빠르게 확인 가능 (O(log N)) |
순서가 중요하지 않을 때 | 인덱스 접근보다 값 존재 여부가 중요할 때 |
🔧 주요 메서드
📌 비교: set vs vector
중복 제거 | 자동 | 수동 확인 필요 |
정렬 | 자동 (오름차순) | sort() 필요 |
특정 값 존재 확인 | O(log N) | O(N) |
인덱스로 접근 | ❌ 안 됨 | ✅ 가능 |
'공부 > C++' 카테고리의 다른 글
[C++] 프로그래머스 의상 (0) | 2025.04.04 |
---|---|
[C++] 프로그래머스 전화번호 목록 (0) | 2025.04.04 |
[C++] 프로그래머스 폰켓몬 (1) | 2025.04.04 |
[C++] 프로그래머스 완주하지 못한 선수 (0) | 2025.04.04 |
[C++] 프로그래머스 대소문자 바꿔서 출력하기 (0) | 2025.04.04 |