일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 인코더
- c
- vue.js
- Rebase
- 프로그래머스
- 블로그개설
- 백준
- c++
- 스프링
- 카카오인코더
- 프로그래밍
- git
- Android
- 머신러닝
- 백트래킹
- Map
- TensorFlow
- BFS
- 연결리스트
- 안드로이드
- python3
- Kotlin
- hackerrank
- ADAS
- 스프링프레임워크
- retrofit
- 스프링 프레임워크
- stl
- DP
- spring
Archives
- Today
- Total
이것저것 공부한 기록
C++) Set, Map 정리 본문
1. Set
- 그냥 큰 상자 안에 모든 원소들을 쑤셔 넣은 것이라고 보면 됨.
- 원소가 '있나/없나'를 판별할 때 쓰기 좋음
#include <set>
using namespace std ;
Library : set
Namespace : std
//선언
set<int> s ;
//insert
s.insert(10) ;
s.insert(20) ;
s.insert(50) ;
s.insert(40) ;
s.insert(40) ;
Set 안에는 중복된 원소들이 없다.
또한, iterator를 사용하여 순서대로 출력을 수행할 경우, 크기대로 정렬되어 출력된다.
for (auto itr = s.begin(); itr != s.end(); ++itr)
cout << *itr << " ";
-> 위 insert의 결과를 출력하면
10 20 40 50
이 나온다
if( s.end() != s.find(x) )
값이 있는지 없는지는 멤버함수 find(s)로 확인할 수 있는데,
위 코드는 s Set에 x가 없을 경우, iterator end() 리턴.
2. Map
Set과 거의 똑같은데 다른점은, key와 그 key에 대응되는 value까지 같이 보관한다.
#include <map>
using namespace std;
Library : map
Namespace : std
map<string, int> num_list ;
//생성
num_list.insert(pair<string, int>("일", 1));
num_list.insert(make_pair("이", 2));
num_list.insert["삼"] = 3;
//insert
num_list["영"];
// 도 생성이 된다!! 값은 0으로 초기화 된다.
insert에 3가지 방법이 있는데, 3번째를 많이 쓰는 듯.
그러나 주의할 점은 위 코드처럼 단순히 참조하는 것만으로도 생성이 된다는 것이다.
cout<<"사 가 가리키는 숫자 : "<< num_list["사"] << endl;
때문에 위의 코드를 실행할 경우
사 가 가리키는 숫자 : 0 이라는 결과가 나온다.
때문에 find함수로 존재하는지 먼저 확인후에 값을 참조하는 것이 권장.
if( num_list.end() != num_list.find("삼십") )
find 사용법은 set과 같다.
* insert를 같은 key에 대해 연속으로 쓸 경우,
첫번째 insert 이후 값은 무시된다.
num_list.insert(make_pair("삼", 9));
num_list.insert(make_pair("삼", 3));
따라서 위와 같은 코드를 실행할 경우 key값 "삼"에 대한 value는 9가 된다.
#include <iostream>
#include <map>
using namespace std;
int main() {
//선언
map<string, int> s;
//insert
s["삼"] = 9;
s["삼"] = 3;
s.insert(make_pair("사", 16));
s.insert(make_pair("사", 4));
cout << "삼 : " << s["삼"] << endl;
cout << "사 : " << s["사"] << endl;
cout << "오 : " << s["오"] << endl;
if (s.end() != s.find("육"))
cout << "육 : " << s["육"] << endl;
}
즉, 위와 같은 코드를 실행해보면
'Study > 프로그래밍 개념정리' 카테고리의 다른 글
C/C++) nth_element (header algorithm) (0) | 2019.11.16 |
---|---|
C/C++) 문자 종류 판별 정리 (0) | 2019.10.26 |
C++) 자주 쓰는 Vector 정리 (0) | 2019.10.26 |
C++) 입출력 정리 (0) | 2019.10.17 |
C++) Const (상수) Pointer 정리 (0) | 2019.09.23 |