STL 유용한 함수 모음

5778 단어 stlcppcpp

정렬

#include <algorithm>
sort(v.bigin(), v.end());
  • 정렬 기준 정하기 : 세번째 인자로 정의한 함수
bool compare(int a, int b) { // 내림차순
	return a > b;
}

sort(v.bigin(), v.end(), compare);
  • 특정 변수를 기준으로 정렬 : pair 이용
vector<pair<int, string> > v;

v.push_back(pair<int, string>(90, "박한울"));
v.push_back(pair<int, string>(85, "이태일"));
v.push_back(pair<int, string>(82, "나동빈"));
v.push_back(pair<int, string>(98, "강종구"));
v.push_back(pair<int, string>(79, "이상욱"));
	
sort(v.begin(), v.end()); // pair의 first를 기준으로 정렬됨
  • 정렬 기준 두 개일 때 : 이중 pair 이용
bool compare(pair<string, pair<int, int> > a, pair<string, pair<int, int> > b) {
	if(a.second.first == b.second.first) { // 성적 같은 경우
		return a.second.second > b.second.second; // 어린 학생 우선
	} else {
		return a.second.first > b.second.first; // 성적 오름차순
	}
}

int main(void) {
	vector<pair<string, pair<int, int> > > v;
	v.push_back(pair<string, pair<int, int> >("나동빈", make_pair(90, 19961222)));
	v.push_back(pair<string, pair<int, int> >("이태일", make_pair(97, 19930518)));
	v.push_back(pair<string, pair<int, int> >("박한울", make_pair(95, 19930203)));
	v.push_back(pair<string, pair<int, int> >("이상욱", make_pair(90, 19921207)));
	v.push_back(pair<string, pair<int, int> >("강종구", make_pair(88, 19900302)));
	
	sort(v.begin(), v.end(), compare);
    
	return 0;
}

문자열 처리

  • 문자열 뒤집기
#include <string>
reverse(str.begin(), str.end());
  • 문자열에서 특정 문자 찾기
#include <string>
str.find(array[i]); //str에서 array[i] 찾기
					//있으면 index, 없으면 string::npos를 return

배열 자리 바꾸기

#include <algorithm>
swap(a[i], a[i+1]);

vector에서 최댓값 찾기

#include <algorithm>
int max = *max_element(v.begin(), v.end());

좋은 웹페이지 즐겨찾기