vector에 대해 질문드립니다.
249
작성한 질문수 28
6장의 마지막에 vector에 대한 내용이 있느나, 혹시나 싶어 질문드립니다.
6.17 For-each 반복문 강의 영상에서 array를 동적 할당으로 받아오면 사용할 수 없다고 하셨습니다. 그리고 동적 할당 array대신 vector을 자주 사용하신다고 하셨는데, 여기서 질문드립니다.
그렇다면 vector을 동적할당(?)으로 받아서 For-each문에서도 사용할 수 있는 건가요? 아직 동적할당에 대한 개념이 제대로 머릿속에 박히지 않아서.. 스스로 코드를 짜며 이해하기에는 힘들어서 질문드립니다. 여러번 반복해야겠어요 ㅠㅠ
강의 내용에서의 vector는 동적할당으로 사용한 것이 아니라서 문의드립니다!
답변 1
1
안녕하세요!
vector 자체가 동적할당 받은 것입니다. vector 는 동적 배열을 편리하게 사용할 수 있도록 이것저것 속성과 기능이 추가되어 만들어진 STL 클래스라고 봐주시면 될 것 같아용
for each 문의 원리는 첫번째 원소를 가리키는 반복자(STL 에 있는 iterator를 말합니다. 이건 16챕터가시면 배웁니다. 포인터랑 비슷해용)와 마지막 원소 '이후' 즉, 범위의 끝 너머를 가리키는 반복자를 사용하여 반복문을 돌리는 것입니다.
vector<int> vec(5);
for(int ele : vec) {
ele = 123;
}
예를 들어 위와 같은 for-each 문이 있다면 이는
vector<int> vec(5);
vector<int>::iterator itr;
for(itr = vec.begin(); itr != vec.end(); ++itr) {
*itr = 123;
}
일반 for문으로 이렇게 쓰는 것과 완전히 동일합니다! for-each 문을 풀어 쓰면 이런 느낌인거에요.
결론적으로 말씀드리자면 for-each 문에 돌릴 수 있는 컨테이너이기 위해선 그 컨테이너의 반복자(iterator)가 있어야한다는 의미입니다.
위 코드에서 볼 수 있듯이 vector 는 begin(), end() 를 지원하여 첫번째 원소를 가리키는 반복자, 범위를 초과한 공간을 가리키는 반복자를 가져올 수 있도록 지원하구요, 또 vector<int>::iterator 이렇게 vector<int> 의 원소들을 참조할 수 있는 반복자 타입을 지원합니다. 그래서 vector 는 for-each 에 돌릴 수 있습니다.
new 로 만든 array 는 반복자를 적용할 수 없어서 for-each 를 돌릴 수 없는 것입니다. 자세한건 링크 참고해주세여
변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠
1
481
1
메모리 주소 10진수로 출력
1
672
1
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
1
515
1
여러가지 리턴 타입에 관한 강의가 어떤 걸까요?
1
549
1
메모리 주소에 관한 질분
0
687
1
인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.
0
558
1
형변환 오버로딩에서 const 관련 질문이 있습니다.
0
448
1
Digit 뒤에 reference를 사용하는 이유
0
512
1
4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결
0
325
1
dat파일이...
0
540
1
TODO:대입 연산자 오버로딩에 대한 소스코드입니다.
0
651
1
복사 생성자 관련 질문이 있습니다.
0
456
1
수업 중 궁금한점이 있습니다.
1
392
1
라이브러리자체가 이해가 되지 않습니다.
0
565
1
마지막 예제 질문
0
305
1
증감연산자 위치에 따른 수행 순서 질문입니다.
0
382
1
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
1
416
1
friend함수 관련 질문이 있습니다.
0
313
1
operator+ 정의부분에서 궁금한 것이 있습니다.
0
448
1
3분 17초 질문
0
354
1
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
0
450
1
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
0
453
2
const Something &st에서 const를 빼면 안되나요?
0
304
1
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
1
495
1





