#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vector1;
vector1.push_back(20); // 자동완성 푸시백밖에 없음
vector1.push_back(30); // 문제없음
//vector1.push_front <-- 문제생김
/*
그러면 앞에 첫번째 데이터 넣으려면, 인설트 써야함
첫번째 포지션, 위치를 알아와야함, 이터레이터 쓴다
*/
cout << "First Insert Test" << endl;
vector<int>::iterator iterInsertPos = vector1.begin();
// 첫번째 위치받아온다.
vector1.insert(iterInsertPos, 100);
//예상 출력 100 20 30
/*
//앞에서는, 이렇게 해줫는데 포문안에다 한번에 써도됨
vector<int>::iterator iterEnd = vector1.end();
for(vector<int>::iterator iterPos = vector1.begin();
iterPos !=iterEnd; iterPos++)
*/
for (vector<int>::iterator iterPos = vector1.begin();
iterPos != vector1.end(); iterPos++) // 이렇게 해도됨
{
//얘는 포인터 같은거라 앞에 *붙혀줘야함
cout << "vector1: " << *iterPos << endl;
}
cout << "Second Insert Test" << endl;
/*
아이템을 더 넣어보자
아래는 비긴 위치가 아니라 두번째 위치가 된다.
*/
iterInsertPos = vector1.begin();
++iterInsertPos;
//두번째 위치에다가
// 파라미터가 더 늘어나면, 첫번째 이터레이터 위치에
// 200이라는 아이템을 2개 넣어라 에요
// 아까 100 20 30 이었잖아요, 그러면 100 200 200 20 30
//출력된다.
vector1.insert(iterInsertPos, 2, 200);
for (vector<int>::iterator iterPos = vector1.begin();
iterPos != vector1.end(); iterPos++)
{
cout << "vector1: " << *iterPos << endl;
}
cout << "Third Insert Test" << endl;
vector<int> vector2; // 벡터2라는 컨테이너 하나 더 만듬
vector2.push_back(1000);
vector2.push_back(2000);
vector2.push_back(3000); // 1000 2000 3000 일 것
iterInsertPos = vector1.begin(); // 벡터 1의 시작위치
/*
요 위치에다가(iterInsertPos) vector2.begin 부터 end까지
전위연산자, 요라인 실행할때 비긴이 아니라 다음위치
*/
vector1.insert(++iterInsertPos, vector2.begin(), vector2.end());
for (vector<int>::iterator iterPos = vector1.begin();
iterPos != vector1.end(); iterPos++)
{
cout << "vector1: " << *iterPos << endl;
}
/*
그래서 이대로 실행해보면, 아까 ++가 들어갔으니깐
100 200 200 20 30 그 사이에 인설트가 됨 벡터2
만약 전위 안쓰고 후위 연산자 쓰면, iterInsertPos++
증감 되는게 저라인 끝나고 실행됨
1000 2000 3000 100 200 ...
벡터를 , 하나의 벡터에 다른 벡터를 인설트 해줄 수
있습니다.
그다음에, 랜덤어세스가 가능했엇죠 배열처럼, 리스트는 안됨
순서상 3번째 2000 출력해보자 , [2]
리스트는 요게 안됨, 빠름, 바로 접근하거나 그게
이터레이터 안써도 되기때문에, 컨테이너 뭐가 더 좋다
그런 정답은 없다.
*/
cout << "Random Access[2]: " << vector1[2] << endl;
}
벡터에서 엘레먼트 접근할때 랜덤 억세스라고 하던데
왜 랜덤억세스임?
지정 억세스 같은데
해당 댓글은 삭제되었습니다.
ㅋㅋ 지정 액세스는 내가 대충 그렇게 보여서 대충 지어낸거임
간단하게 생각해서 이터레이터에 대해 증감 연산자를 적용할 수 있는지 여부를 따져보면 된다