728x90
반응형
2023.02.17 최초 작성
연속된 메모리 공간을 갖는 배열 구조이다. 내부에서 자동으로 동적 할당하며 배열 공간의 크기를 관리한다.
선언 및 초기화
vector<자료형> 변수명 |
vector<자료형> 변수명(숫자) |
vector<자료형> 변수명 = { 변수1, 변수2, 변수3... } |
vector<자료형> 변수명[] = {, } |
vector<vector<자료형>> 변수명 |
vector<자료형>변수명.assign(범위, 초기화할 값) |
반복자
v.begin() | 백터 시작점의 주소 값 반환 |
v.end() | 백터 (끝부분 + 1) 주소값 반환 |
v.rbegin() (revers begin) | 백터의 끝 지점을 시작점으로 반환 |
v.rend() (revers end) | 백터의 (시작 + 1) 지점을 끝 부분으로 반환 |
요소 접근
v.at(i) | 백터의 i번째 요소 접근 (범위 검사함) |
v.[i] (operator []) | 백터의 i번째 요소 접근 (범위 검사 안함) |
v.front() | 백터의 첫번째 요소 접근 |
v.back() | 백터의 마지막 요소 접근 |
요소 삽입과 삭제
v.push_back(변수값) | 백터의 마지막 부분에 새로운 요소 추가 |
v.pop_back() | 백터의 마지막 부분 제거 |
v.insert(삽입할 위치의 주소 값, 변수 값) | 사용자가 원하는 위치에 요소 삽입 |
v.emplace(삽입할 위치의 주소 값, 변수 값) | 사용자가 원하는 위치에 요소 삽입(복사생성자 X) |
v.emplace_back(변수값) | 백터의 마지막 부분에 새로운 요소 추가(복사생성자 X) |
v.erase(삭제할 위치) v.erase(시작위치, 끝위치) |
사용자가 원하는 index값의 요소를 지운다 |
v.clear() | 백터의 모든 요소를 지운다.(return size = 0) |
용량
v.empty() | 비었으면 true 아니면 false |
v.size() | 백터의 크기 반환 |
v.capacity() | 백터의 실제크기(최대크기) 반환 |
v.max_size() | 백터가 system에서 만들어 질 수 있는 최대 크기 반환 |
v.reserve(숫자) | 백터의 크기 설정 |
v.shrink_to_fit() | capacity의 크기를 백터의 실제 크기에 맞춤 |
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
cout << "v의 첫번째 요소 : " << v.front() << endl;
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ' << v.at(i) << endl;
}
cout << "v의 마지막 요소 : " << v.back() << endl;
v.insert(v.begin() + 2, 25); // 삽입
cout << "2번지에 25 삽입 후 : " << endl;
for (vector<int>::iterator itr = v.begin(); itr != v.end(); ++itr) {
cout << *itr << endl;
}
v.erase(v.begin() + 4); // 삭제
cout << "4번지 삭제 후 : " << endl;
for (int element : v) {
cout << element << endl;
}
return EXIT_SUCCESS;
}
[실행 결과]
v의 첫번째 요소 : 10
10 10
20 20
30 30
40 40
50 50
v의 마지막 요소 : 50
2번지에 25 삽입 후 :
10
20
25
30
40
50
4번지 삭제 후 :
10
20
25
30
50
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Student {
private:
string name;
int kor;
int eng;
int math;
public:
Student(string name, int kor, int eng, int math) :
name(name), kor(kor), eng(eng), math(math) {}
~Student() {}
void print() {
cout << "학생이름 : " << this->name << endl;
cout << "국어점수 : " << this->kor << endl;
cout << "영어점수 : " << this->eng<< endl;
cout << "수학점수 : " << this->math << endl;
}
};
int main() {
vector<Student> v;
v.emplace_back("홍길동", 100, 90, 80);
v.emplace_back("이순신", 80, 90, 100);
v.emplace_back("유관순", 77, 88, 99);
cout << "학생 수 : " << v.size() << endl;
while (!v.empty()) {
v.back().print();
v.pop_back();
}
cout << endl;
vector<Student*> v2;
v2.push_back(new Student("김구", 99, 88, 88));
v2.push_back(new Student("안중근", 100, 99, 98));
cout << "학생 수 : " << v2.size() << endl;
for (Student* s : v2) {
s->print();
}
cout << endl << "번지로 접근 : " << endl;
v2[1]->print();
return EXIT_SUCCESS;
}
[실행 결과]
학생 수 : 3
학생이름 : 유관순
국어점수 : 77
영어점수 : 88
수학점수 : 99
학생이름 : 이순신
국어점수 : 80
영어점수 : 90
수학점수 : 100
학생이름 : 홍길동
국어점수 : 100
영어점수 : 90
수학점수 : 80
학생 수 : 2
학생이름 : 김구
국어점수 : 99
영어점수 : 88
수학점수 : 88
학생이름 : 안중근
국어점수 : 100
영어점수 : 99
수학점수 : 98
번지로 접근 :
학생이름 : 안중근
국어점수 : 100
영어점수 : 99
수학점수 : 98
728x90
반응형
728x90
반응형