map을 공부하던중.. m.insert(pair<int, int>(i, i * 100));
안녕하세요.
오늘 map 을 공부하던중..
pair<int,int>(i,i*100) -> 이 부분이 도대체 무슨 소리인지 모르겠더라구요.. 이름이 없어서 생성자도 아니고 operator도 아니고 1시간 구글링 결투끝에 임시객체라는 표현을 알게되었어요.
Q1
임시객체가 무엇을 반환하는지가 궁금합니다..!
코드상으로는 key 랑 value를 반환하는 것 같긴한데..
내부를 살펴볼려해도 외계어가 난무해서 물어봅니다
ㅠㅠ
제가 너무 깊게 알려는건지 아니면 기초지식이 부족한건지 잘모르겠네요 하하..
답변 2
1
... (생략)
pair는 단순하게 struct이고 key, value 형태를 템플릿으로 받게 되어 있습니다.
직접 구현한다면 위와 같은 느낌인 것이죠.
C++에서 struct와 class는 거~의 차이가 없습니다.
struct로 객체를 만들 수 있는데, 그 객체 생성자를 통해
key는 i, value는 i*100을 넣어준 상태인 것이죠.
임시 객체란 말 그대로 임시로 사용하다 사용하는 객체,
즉 변수를 통하지 않고 넘긴 것을 의미하는데요.
요렇게 만들어도 동일하겠지만 굳이 불필요하게 p라는 지역 변수를 사용할 필요는 없겠죠?
그래서 한 번에 insert(pair<int, int>(10, 100)) 형태로 사용하게 되는 것이고
임시 객체를 사용하면 최적화에도 도움이 됩니다. (이동 연산이 가능해서)
0
삭제된 글입니다
1
강사님이 전에 언급하셨듯이 구조체랑 클래스랑 사실 다를게 없고 굳이 다른점은 기본 접근지정자가 public이냐 private 이냐 차이밖에 없습니다. 그래서 구조체로 선언하든 클래스로 선언하든 다 객체에요 (클래스=객체가 아니라 클래스를 이용해 데이터를 선언하면 객체가 되는거죠)
덧붙여서 몇몇 책에서는 그냥 변수도 객체라고 하는 경우도 있어요. 타입을 이용해 메모리에 실체화하는것이 객체라면, 구조체를 이용하든 클래스를 이용하든 기본타입을 이용하든 다 객체인거죠
소스코드와 관련하여 질문드립니다
0
70
1
map 컨테이너의 emplace 함수에 대해
0
114
2
시작이 안되네요...!
0
97
2
EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유
0
126
1
리틀 엔디안 장점 질문합니다.
0
131
1
메모리 창에 주소를 넣었는데 영어 꺠짐
0
124
1
타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.
0
94
2
map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.
1
139
2
hello world 부터 오류 ㅠㅜ
0
189
1
지역변수가 스택? 레지스터
0
132
2
마지막 문제 질문드립니다.
0
165
2
메모리창이 비활성화됩니다.
0
98
1
이중포인터 강좌 부분 질문있습니다.
0
145
1
2를 더하는 이유
0
133
1
메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다
1
111
1
해당 코드는 왜 오류가 날까요?
0
155
1
마지막 문제 질문 있습니다.
0
119
1
강의 마지막부분에 질문이 있습니다.
0
192
2
Field초기화
0
141
1
virtual과 override 차이
0
315
2
3:30 참조자 리턴
0
168
1
map 찾기
0
158
1
프로그램 질문드려요
0
260
1
캐스팅 질문
0
138
1





