map

key의 중복없이 정렬된 상태로 key-value 쌍을 저장하고, 랜덤한 인덱스의 데이터에 접근 불가

검색, 삽입, 삭제 - 시간 복잡도: O(logN)

선언

map은 key를 기준으로 오름차순 정렬

map<key_type, value_type> m;
  • 내림차순으로 정렬하고 싶을 때 greater<key_type> 추가
map<key_type, value_type, greater<key_type>> m;

초기화

map<key_type, value_type> m = { {key1, val1}, {key2, val2}, ... };

key로 value 찾기

//방법 1
m.at(key);

//방법 2
m[key];

삽입

//방법 1
m.insert(pair<type1, type2>(key1, val1));

//방법2
m.insert(make_pair(key1, val1));

map 순회

for(auto iter : m)
	cout << iter.first << " " << iter.second << "\n";

set

key를 중복없이 정렬된 상태로 저장하고, 랜덤한 인덱스의 데이터에 접근 불가

검색, 삽입, 삭제 - 시간 복잡도: O(logN)

삽입

set<int> s;
s.insert(x);

삭제

set<int> s;
s.erase(x);

검색

s.find() : 찾는 값이 있으면 해당 위치의 iterator 반환, 아니면 s.end()반환

set 순회

#include <iostream>
#include <set>
...
set<int> s;

//방법1
for(auto iter = s.begin(); iter != s.end(); iter++) {
	cout << *iter << " ";
}

for(auto iter : s) {
	cout << iter << " ";
}

count()

set에서 찾고자 하는 요소가 있으면 1, 없으면 0 반환

#include <iostream>
#include <set>
using namespace std;

int main() {
    set<int> s = {1, 2, 3, 4, 5};

    if (s.count(3)) cout << "3이 존재합니다!\n";
    if (!s.count(6)) cout << "6은 없습니다!\n";

    return 0;
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN