STL有用関数セット


ツールバーの

#include <algorithm>
sort(v.bigin(), v.end());
  • 並べ替え基準の決定:3番目のパラメータとして定義された関数
  • bool compare(int a, int b) { // 내림차순
    	return a > b;
    }
    
    sort(v.bigin(), v.end(), compare);
  • 特定の変数に基づいてソート:
  • 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를 기준으로 정렬됨
    2つの
  • ソート基準:2対
  • 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());