Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] vector #2 본문
#include <iostream>
using namespace std;
#include <vector>
int main()
{
// 컨테이너(Container): 데이터를 저장하는 객체
// vector (동적 배열)
// - vector의 동작 원리 (size/capacity)
// - 중간 삽입/삭제
// - 처음/끝 삽입/삭제
// - 임의 접근
// 반복자(Iterator) : 포인터와 유사한 개념. 컨테이너의 원소(데이터)를 가리키고, 다음/이전 원소로 이동 가능
vector<int> v(10);
for (vector<int>::size_type i = 0; i < v.size(); i++) // 벡터 한정으로는 iterator 포문과 큰 차이 없음
v[i] = i;
//vector<int>::iterator it;
//int* ptr;
//it = v.begin();
//ptr = &v[0];
//cout << (*it) << endl;
//cout << (*ptr) << endl;
//int a = 1;
//int b = a++; // (b = 1, a = 2)
//int c = ++a; // (a = 2, a = 2)
//it++;
//++it;
//ptr++;
//++ptr;
//it--;
//--it;
//ptr--;
//--ptr;
//it += 2;
//it = it - 2;
//ptr += 2;
//ptr = ptr - 2;
vector<int>::iterator itBegin = v.begin();
vector<int>::iterator itEnd = v.end(); // 데이터의 끝을 가리키기 때문에 데이터를 조작하면 절대 안되고 끝을 판별할 때 사용됨
// 더 복잡해보이는데 사용하는 이유
// 다른 컨테이너는 v[i]와 같은 인덱스 접근이 안 될 수도 있음
// iterator는 vector 뿐 아니라, 다른 컨테이너에도 공통적으로 있는 개념
// 때문에 다른 컨테이너. 자료구조로 이동하기 수월함
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) // iterator를 사용 할 때는 it++이 아닌 ++it가 아주 약간 성능에 도움이 된다.
{
cout << (*it) << endl;
}
int* ptrBegin = &v[0]; // v.begin._Ptr;
int* ptrEnd = ptrBegin + 10; // v.end()._Ptr;
for (int* ptr = ptrBegin; ptr != ptrEnd; ++ptr)
{
cout << (*ptr) << endl;
}
// const int*;
// vector<int>::const_iterator cit1 = v.cbegin();
// *cit1 = 100; // const 형태이기 때문에 수정 불가
// 역방향 문법
for (vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); ++it)
{
cout << (*it) << endl;
}
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] vector #4 (0) | 2023.05.31 |
---|---|
[C++] vector #3 (0) | 2023.05.29 |
[C++] vector #1 (0) | 2023.05.18 |
[C++] 콜백 함수 (0) | 2023.05.18 |
[C++] 템플릿 기초 #2 (0) | 2023.05.03 |