만약 목록의 크기가 고정된 경우라면 리스트가, 그렇지 않다면 벡터가 유리하다. 더 빠른 처리가 가능하기 때문이다.
: 벡터를 생성하고 벡터에 요소를 추가, 삭제하는 기본적인 코드이다.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// 1. 벡터 생성
vector<int> intVector;
// 2. 1~10을 저장
for (int i = 1; i <= 10; i++) {
intVector.push_back(i);
}
// intVector를 출력
cout << "intVector: ";
for (int i = 0; i < 10; i++) {
cout << intVector[i] << ", " ;
}
cout << endl ;
cout << "intVector: ";
for (int i = 0; i < 10; i++) {
cout << &intVector[i] << ", " ;
}
cout << endl ;
// 문자열 벡터 생성
vector<string> strVector;
// 문자열 저장
strVector.push_back("A");
strVector.push_back("B");
strVector.push_back("C");
strVector.push_back("D");
// 문자열벡터 출력
cout << "strVector: ";
for(unsigned int i = 0; i < strVector.size(); i++) {
cout << strVector[i] << ", ";
}
cout << endl ;
// 3. 문자열 벡터 중 마지막 요소 삭제
strVector.pop_back();
// 4. 문자열 벡터 출력
cout << "strVector: ";
for(unsigned int i = 0; i < strVector.size(); i++) {
cout << strVector[i] << ", ";
}
cout << endl ;
cout << "strVector: ";
for(unsigned int i = 0; i < strVector.size(); i++) {
cout << &strVector[i] << ", ";
}
cout << endl ;
return 0;
}
intVector: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
intVector: 0x148606690, 0x148606694, 0x148606698, 0x14860669c, 0x1486066a0, 0x1486066a4, 0x1486066a8, 0x1486066ac, 0x1486066b0, 0x1486066b4,
strVector: A, B, C, D,
strVector: A, B, C,
strVector: 0x1486066d0, 0x1486066e8, 0x148606700,
vector <자료형> 변수명(크기)
크기를 생략할 경우에는 메모리가 아직 할당되지 않은 상태이기 때문에 아래와 같은 코드를 작성할 경우 오류가 난다. 아래와 같이 특정 인덱스에 값을 채우고 싶다면 꼭 사전에 크기를 설정해야 한다.
push_back(a)
pop_back()
일부 컴파일러에서는 변수의 자료형을 int로 설정하게 된다면 경고가 발생할 수 있지만, 이 경우 부호 있는 값으로 자동 전환되며, 문제는 발생하지 않는다.
당연히 원하는 요소를 삭제하는 함수가 있을 줄 알고 찾아봤는데 없었다... 이게 충격실화가 아니면 뭘까 그래서 예제를 이용해 내가 원하는 요소를 원하는 위치에 추가하고, 삭제하는 코드를 짜봤다.