vector에서
220
작성한 질문수 6
vector<int>::iterator it;
이거는 단순히 vector클래스에서
using iterator = _Vector_iterator<_Scary_val>;
라고 선언 해줬기 때문에 위처럼 표현 하는게 맞나요??
간단히 비슷하게 테스트 해본결과 정말 단순히 using 선언만 클래스 안에서 해준, 그 클래스의 맴버객체로도 존재하지 않는 독립적인 클래스로 봐도 되는 건가요?
답변 1
1
문법상 using이나 typedef로 독립적인 클래스를 iterator라고 불러도 되고,
아니면 정말 vector<T> 안에 iterator라는 클래스가 정의 있어도 됩니다.
말 그대로 [vector<int> 내에 정의된 iterator라는 타입]을 사용하겠다! 라고 한 것이죠.
0
넵 정말 감사합니다. 근데 왜 굳이 클레스 안에 다른 클래스 이름의 정의 하는 건가요??
우리가 사용하는건 거의 vector<T> 이고 vector 헤더 안에 수많은 클래스들 등이 정의 되어 있으니 가독성 때문에 주로 사용하는 vector클래스에 정의 하는건가요???? 답변 감사합니다^^
2
가독성 때문은 아니고 실제 설계상 유용하기 때문입니다.
예를 들어 class Knight 안에 using Pet = Cat; 이라고 별칭을 붙여 놓으면
앞으로 Knight::Pet이라는 별칭을 이용해 Cat 객체를 만들 수 있게 됩니다.
즉 Knight::Pet pet; 이랑 Cat pet; 이랑 100% 동일한 것이죠.
만약에 추후 기획이 바뀌어 Knight의 Pet는 Dog로 바꿔치기 해야 한다고 가정할 때,
일일히 Cat pet;으로 사용했다면 해당 부분을 하나 하나 Dog pet;으로 바꿔치기 해야겠지만
using 별칭을 사용했을 경우 using Pet = Dog로만 바꿔치기 하면
모든 코드가 마법처럼 적용됩니다.
vector<T>::iterator도 마찬가지로 [vector의 반복자(iterator)]라는 별칭을 지어준 셈이죠.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
560
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
453
1
strcpy() 구현 관련 질문
0
536
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
475
1
클래스 타입의 포인터 질문합니다
0
559
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
503
1
템플릿 특수화 관련 질문
0
390
1
포인터 관련 질문합니다!
0
271
1
Unable to start assembler. Check your settings.
0
849
2
cpu선택
0
549
1
포인터 질문이 있습니다
0
331
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
589
1
iterator 삭제관련
0
415
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
316
1
15 분 45초 대 질문
0
317
0
스택 프레임 질문합니다!
2
312
1
오른값 참조 in 게임
0
391
0
동적할당 질문이 있습니다
0
457
1
안녕하세요 메모리에 대해 질문드립니다.
0
312
1
함수객체 의 매개변수
0
366
1
복사생성자
0
439
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
430
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
359
1
스택 오버플로우
2
801
1





