[C++] STL 정리

노호준·2022년 5월 5일
1

string

//문자열 비교
//str1 > str2 면 1, str1 == str2 면 0, str1 < str2 면 -1
str1.compare(str2)

//문자열 검색
//찾으면 첫 번째 인덱스 반환, 없으면 -1(string::npos) 반환
str1.find(str2)		//정방향
str1.rfind(str2)	//역방향
//오프셋
str1.find(str2, 4)
//오프셋을 이용해서 모든 인덱스 찾기
int idx = 0;
while ((idx = str1.find(str2, idx)) != -1) {
    printf("%d\n", idx);
    idx += 1;
}

//문자열 치환
str1.replace(시작 위치, 길이, str2)

//일치하는 문자열 전부 치환
int idx = 0;
while ((idx = str1.find(str2, idx)) != -1) {
    str1.replace(idx, str2.length(), str3);
    idx += str3.length();
}

//부분 문자열
str.substr(시작위치)	//끝까지
str.substr(시작위치, 길이)

vector

//size만큼 x로 초기화한 벡터
vector<int> v(size, x)
//2차원 벡터 초기화
vector<vector<int>> board(rowSize, vector<int>(colSize, x));

set

//찾으면 그 주소를 반환, 없으면 set.end() 반환
set.find(x)

//순회
set<int>::iterator iter;
for (iter = sett.begin(); iter != sett.end(); ++iter)
    printf("%d\n", *iter);

algorithm

//정렬된 컨테이너 알고리즘(정렬된 vector, set, map 등)
//x의 첫번째 인덱스의 주소를 반환, 없으면 x보다 큰 첫번째 원소
lower_bound(v.begin(), v.end(), x)
//x보다 큰 첫번째 원소의 주소를 반환
upper_bound(v.begin(), v.end(), x)

//내림차순 정렬
sort(arr, arr+n, greater<>())

//정렬 기준 설정
struct Comp {
    bool operator()(pair<int, int> a, pair<int, int> b) {
        if (a.second == b.second)
            return a.first < b.first;
        return a.second < b.second;
    }
};
//sort 정렬 기준
sort(arr, arr + n, Comp())
//컨테이너 정렬 기준
priority_queue<pair<int, int>, vector<pair<int, int>>, Comp> pq;
profile
안녕하세요

0개의 댓글