'STL'에 해당되는 글 3건

  1. 2013.08.06 priority queue
  2. 2013.07.12 compare
  3. 2013.07.07 map

priority queue

STL 2013. 8. 6. 12:54
typedef pair<int, int> ii; //자료형 정의해주고 priority_queue<int> pq1; //int형 pq 만들때 priority_queue <int, vector<int>, greater<int> > pq2; //int형 min heap priority_queue<int, vector<ii>, greater<ii> > pq3; //ii의 first를 기준으로 하는 min heap 보통 pq를 생성하면 max heap이 되기 때문에
min heap을 만드려면 위와같이 해주어야 한다, 아니면 넣을때 음수로 바꿔서 넣어도 되긴한데 그럼 헷갈릴듯
세번째 경우는, 그래프를 만들떄 edge와 cost를 pair로 짝지을때 많이 이용한다(최소경로 구할때)
ii의 first를 기준으로 정렬한다는것에 주의

'STL' 카테고리의 다른 글

compare  (0) 2013.07.12
map  (0) 2013.07.07
Posted by bogus919
,

compare

STL 2013. 7. 12. 14:39
정렬할때, sort함수에 cmp함수를 파라미터로 넣어서
정렬 기준을 지정해 줄 수 있다
아래처럼 cmp함수를 만들면
제일 먼저 두 스트링의 첫글자를 비교하여 작은(사전순으로) 순서대로 정렬되고
만약 첫글자가 같다면 두 스트링의 길이를 비교하여 작은 순서대로 정렬되고
첫글자도 같고 길이도 같으면 마지막으로 사전순으로 정렬한다
bool cmp(const string& s1,const string &s2) { if ( s1[0] != s2[0] ) return s1[0] < s2[0]; else if ( s1.length() != s2.length() ) return s1.length() < s2.length(); else return s1 < s2; }
이렇게 cmp함수를 만들고(리턴은 bool) 사용할때는
sort(v.begin(), v.end(), cmp); 이래하면된다
그리고 cmp함수에서 파라미터를 받을때 const도 붙여주고 &도 붙여줬는데
&를 붙여주면 call by reference가 되고
call by reference를 하느라고 값이 바뀔 가능성도 있는데 const를 붙여주면
값이 바뀌지않고 유지된다

'STL' 카테고리의 다른 글

priority queue  (0) 2013.08.06
map  (0) 2013.07.07
Posted by bogus919
,

map

STL 2013. 7. 7. 23:56
map은 유용한 container이지만 

원소들 간의 이동을 그냥 할수 없고, iterator를 사용해야한다

1. map의 원소들을 돌면서 value값을 확인하려면 이래 하면된다

map <int, int="">::iterator it;

for(it = x.begin(); it != x.end(); it++)

if( it-&gt;second &gt;= 2)

count++;


2. key에 해당하는 값을 쓰거나 참조하기 위해서는

m이라는 map이 있으면

m[key] = value; 혹은
m.insert(ii(key, value));

이런 식으로 하면된다


'STL' 카테고리의 다른 글

priority queue  (0) 2013.08.06
compare  (0) 2013.07.12
Posted by bogus919
,