set
#include <set> // set을 쓰기 위한 헤더
#include <iostream>
int main()
{
std::set<int> s;
// 삽입
s.insert(1); // s{ 1 }
s.insert(2); // s{ 1, 2 }
s.insert(3); // s{ 1, 2, 3 }
// 중복된 데이터는 삽입할 수 없다.
// insert()의 반환은 pair 타입이며
// 두 번째 데이터에 삽입 여부가 담긴다.
if (false == s.insert(1).second)
{
std::cout << "이미 1을 가지고 있음.\n";
}
// 반복자
// 다른 컨테이너와 비슷하다.
std::set<int>::iterator iter;
iter = begin(); // [*1][2][3][]
iter = end(); // [1][2][3][*]
std::set<int>::reverse_iterator riter;
riter = rbegin(); // [][1][2][*3]
riter = rend(); // [*][1][2][3]
// 기타 연산
// count() : 데이터가 몇 개인지 센다.
size_t c = s.count(1); // 1을 반환한다.
// find() : 데이터가 있는지 확인한다.
if (s.end() == s.find(4)) // 없으면 end()다.
{
std::cout << "4는 없다.\n";
}
// 삭제
s.erase(2); // s{ 1, 3 }
s.clear(); // s{}
// 크기
if (0 == s.size())
{
std::cout << "s의 size는 0임\n";
}
if (s.empty())
{
std::cout << "s는 비었음\n";
}
// 비교가 가능하다.
std::set<int> s2(s);
if (s == s2)
{
std::cout << "둘이 같음\n";
}
// C++17부터는 아래와 같이 초기화가 가능하다.
std::set s3 = { 1, 2, 3, 4 };
}
map
#include <map> // map을 쓰기 위한 헤더
#include <iostream>
#include <string>
int main()
{
// 첫 번째 템플릿 파라미터는 키의 타입을
// 두 번째 템플릿 파라미터는 값의 타입을 지정한다.
std::map<std::string, int> ageMap;
// 삽입
// 첫 번째 원소는 트리에 사용되는 키고,
// 두 번째 원소는 키에 대응되는 값이다.
ageMap.insert({"홍길동", 23});
ageMap.insert({"김철수", 17});
// 원소 접근
// [] 연산자로 ageMap에 있는 원소를 접근할 수 있다.
std::cout << ageMap["홍길동"] << "\n"; // 23
std::cout << ageMap["김철수"] << "\n"; // 17
ageMap["홍길동"] = 25; // 이제 홍길동과 대응되는 데이터는 25다.
ageMap["이영희"] = 19; // 새로운 데이터를 삽입할 수도 있다.
// 반복자도 제공된다. 코드는 생략한다.
// 기타 연산
// set에서 제공하는 연산을 갖고 있다.
size_t c = ageMap.count("홍길동"); // 1
if (ageMap.end() != ageMap.find("이영희"))
{
std::cout << "영희와 관련된 데이터가 존재한다.\n";
}
// 삭제
ageMap.erase("홍길동");
ageMap.clear();
// 크기
ageMap.size(); // 0
ageMap.empty(); // true
// C++17부터는 아래처럼 초기화 할 수 있다.
// 아래의 map의 타입은 map<string, string>이다.
std::map tempMap = { std::pair{"Hello", "World"} };
}
'코딩 > 자료구조' 카테고리의 다른 글
| [자료구조] 힙(Heap) (0) | 2022.09.05 |
|---|---|
| [자료구조] 이진 검색 트리 (0) | 2022.07.06 |
| [자료구조] 그래프 (0) | 2022.07.04 |
| [자료구조] 큐(queue) (0) | 2022.07.04 |
| [자료구조] 스택(Stack) (0) | 2022.07.04 |