강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

루키스팬님의 프로필 이미지
루키스팬

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

map #1

map을 공부하던중.. m.insert(pair<int, int>(i, i * 100));

해결된 질문

작성

·

458

0

안녕하세요.

오늘 map 을 공부하던중..

pair<int,int>(i,i*100) -> 이 부분이 도대체 무슨 소리인지 모르겠더라구요.. 이름이 없어서 생성자도 아니고 operator도 아니고 1시간 구글링 결투끝에 임시객체라는 표현을 알게되었어요.

Q1

임시객체가 무엇을 반환하는지가 궁금합니다..!

코드상으로는 key 랑 value를 반환하는 것 같긴한데..

내부를 살펴볼려해도 외계어가 난무해서 물어봅니다

ㅠㅠ

 

 

제가 너무 깊게 알려는건지 아니면 기초지식이 부족한건지 잘모르겠네요 하하..

 

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

image... (생략)

imagepair는 단순하게 struct이고 key, value 형태를 템플릿으로 받게 되어 있습니다.
image
직접 구현한다면 위와 같은 느낌인 것이죠.

C++에서 struct와 class는 거~의 차이가 없습니다.
struct로 객체를 만들 수 있는데, 그 객체 생성자를 통해
key는 i, value는 i*100을 넣어준 상태인 것이죠.

임시 객체란 말 그대로 임시로 사용하다 사용하는 객체,
즉 변수를 통하지 않고 넘긴 것을 의미하는데요.
image요렇게 만들어도 동일하겠지만 굳이 불필요하게 p라는 지역 변수를 사용할 필요는 없겠죠?
그래서 한 번에 insert(pair<int, int>(10, 100)) 형태로 사용하게 되는 것이고
임시 객체를 사용하면 최적화에도 도움이 됩니다. (이동 연산이 가능해서)

루키스팬님의 프로필 이미지
루키스팬
질문자

감사합니다 도움이 되었어요!

0

삭제된 글입니다

루키스팬님의 프로필 이미지
루키스팬
질문자

pair는 구조체로 이루어져있는데 구조체는 객체가 아니지 않나요?

강사님이 전에 언급하셨듯이 구조체랑 클래스랑 사실 다를게 없고 굳이 다른점은 기본 접근지정자가 public이냐 private 이냐 차이밖에 없습니다. 그래서 구조체로 선언하든 클래스로 선언하든 다 객체에요 (클래스=객체가 아니라 클래스를 이용해 데이터를 선언하면 객체가 되는거죠)

덧붙여서 몇몇 책에서는 그냥 변수도 객체라고 하는 경우도 있어요. 타입을 이용해 메모리에 실체화하는것이 객체라면, 구조체를 이용하든 클래스를 이용하든 기본타입을 이용하든 다 객체인거죠

루키스팬님의 프로필 이미지
루키스팬

작성한 질문수

질문하기