v.erase(remove(v.begin(), v.end(), 지우고 싶은 원소), v.end());
#include <queue>
#include <vector>
struct pq_cmp{
bool operator()(pair<int, int>&a, pair<int, int>&b) {
if (a.first == b.first) {
return a.second > b.second;
}
else {
return a.first < b.first;
}
}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, pq_cmp> pq;
if(!pq.empty()) {
pair<int, int> max_val = pq.top();
pq.pop();
}
#include <unordered_map>
unordered_map<string, int> m;
for(int i =0; i<임의배열.size(); i++) {
m[임의배열[i]]++;
}
bool cmp(pair<string, int>& a, pair<string, int>& b)
{
return a.second > b.second;
}
unordered_map<string, int> m;
vector<pair<string, int>> v(m.begin(), m.end());
sort(v.begin(), v.end(), cmp);
#include <map>
include <set>
include <map>
iterator 반환하므로, 값 참조시 * 붙이기
cout << "max값: " << *max_element(arr, arr+size) << endl;
cout << "min값: " << *min_element(arr, arr+size) << endl;
cout << "max값: " << *max_element(v.begin(), v.end()) << endl;
cout << "min값: " << *min_element(v.begin(), v.end()) << endl;
sizeof(arr)/sizeof(int)
string::stoi(str)
str == ""
일 시 stoi(str)
사용하면 core dump 남!!!!!std::sort(str.begin(), str.end())
std::sort(str.begin(), str.end(), std::greater<>())
#include <climit>
#include <cstdlib>
#include <cmath>
void dfs(int root) {
visited[root] = true;
cnt ++;
for(auto &next: adj[root]) {
if(visited[next]) continue;
dfs(next);
}
완탐 혹은 재귀 사용시, 메인에서 반복문 돌면서 재귀 호출해야되는지 생각하기
최단거리는 항상 bfs 생각
size() 함수의 반환값은 unsigned long
int n = nums.size();
min_ = min(n, s.size());
//이렇게 하면 n은 int 고 s.size()는 unsigned long 이라 에러남
//방법1
min_ = min(nums.size(), s.size());
//방법2
int n = nums.size();
int ss = s.size();
min_ = min(n, ss);
//이렇게 타입 맞춰줘야함
#include <algorithm>
sort(v.begin(), v.end(), cmp);