반응형
[C/C++] Vector 선언 및 초기화
vector <자료형> 이름
- vector<int> v;
- 비어있는 vector v를 생성합니다. - vector<int> v(5);
- 기본값(0)으로 초기화 된 5개의 원소를 가지는 vector v를 생성합니다. - vector<int> v(5, 2);
- 2로 초기화된 5개의 원소를 가지는 vector v를 생성합니다. - vector<int> v1(5, 2);
vector<int> v2(v1);
- v2는 v1 vector를 복사해서 생성됩니다. - v.assign(5, 2);
- 2의 값으로 5개의 원소 할당. - v.at(idx);
- idx번째 원소를 참조합니다.
- v[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전합니다. - v[idx];
- idx 번째 원소를 참조합니다.
- 범위를 점검하지 않으므로 속도가 v.at(idx)보다 빠릅니다. - v.front();
- 첫번째 원소를 참조합니다. - v.back();
- 마지막 원소를 참조합니다. - v.clear();
- 모든 원소를 제거합니다.
- 원소만 제거하고 메모리는 남아있습니다.
- size만 줄어들고 capacity는 그대로 남아있습니다. - v.push_back(7);
- 마지막 원소 뒤에 원소 7을 삽입합니다. - v.pop_back();
- 마지막 원소를 제거합니다. - v.begin();
- 첫번째 원소를 가리킵니다. (iterator와 사용) - v.end();
- 마지막의 "다음"을 가리킵니다 (iterator와 사용) - v.rbegin();
- reverse begin을 가리킨다 (거꾸로 해서 첫번째 원소를 가리킵니다)
- iterator와 사용. - v.rend();
- reverse end 을 가리킨다 (거꾸로 해서 마지막의 다음을 가리킵니다)
- iterator와 사용. - v.reserve(n);
- n개의 원소를 저장할 위치를 예약합니다(미리 동적할당 해놉니다) - v.resize(n);
- 크기를 n으로 변경한다.
- 더 커졌을 경우 default값인 0으로 초기화 한다. - v.resize(n,3);
- 크기를 n으로 변경한다.
- 더 커졌을 경우 인자의 값을 3으로 초기화한다. - v.size();
- 원소의 갯수를 리턴한다. - v.capacity();
- 할당된 공간의 크기를 리턴한다.
- 공간 할당의 기준은 점점 커지면서로 capacity를 할당하게 됩니다.
**size와 capacity에 관계는 4번 항목에서 설명드립니다. 중요하니 꼭 보고 가세요 - v2.swap(v1);
- v1과 v2의 원소와 capacity 바꿔줍니다. (모든걸 스왑해줌)
- v1의 capacity를 없앨때 (할당한 메모리를 프로그램이 끝나기 전에 없애고 싶을때) 사용하기도 합니다.
- v2를 capacity가 0인 임시 객체로 만들어서 스왑을 해줍니다.
- vector<int>().swap(v1); - v.insert(2, 3, 4);
- 2번째 위치에 3개의 4값을 삽입합니다. (뒤엣놈들은 뒤로 밀림) - v.insert(2, 3);
- 2번째 위치에 3의 값을 삽입합니다.
- 삽입한 곳의 iterator를 반환합니다. - v.erase(iter);
- iter 가 가리키는 원소를 제거합니다.
- size만 줄어들고 capacity(할당된 메모리)는 그대로 남습니다.
- erase는 파라미터 하나를 받을때와 두개를 받을 때 다릅니다. - v.empty()
- vector가 비었으면 리턴 true
- 비어있다의 기준은 size가 0이라는 것이지, capacity와는 상관이없습니다. - v.size();
- 원소의 갯수를 리턴한다. - v.capacity();
- 할당된 공간의 크기를 리턴한다.
- 공간 할당의 기준은 점점 커지면서로 capacity를 할당하게 됩니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int i;
vector<int> data(5);
vector<double> data2(5);
vector<char*> strs(5);
strs[0] = "aaa";
strs[1] = "bbb";
strs[2] = "ccc";
strs[3] = "ddd";
strs[4] = "fff";
for (i = 0; i < 5; i++)
{
data[i] = i + 1;
data2[i] = i * 1.2;
}
for (i = 0; i < 5; i++)
{
cout << "data[" << i << "]=" << data[i] << endl;
cout << "data2[" << i << "]=" << data2[i] << endl;
cout << "strs[" << i << "]=" << strs[i] << endl;
}
cout << endl;
return 0;
}
출처 : https://blockdmask.tistory.com/70
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ STL 컨테이너(Container) 사용법 (0) | 2022.12.11 |
---|---|
C++ STL(Standard Template Library)란? (0) | 2022.12.11 |
C++ Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. (0) | 2022.12.08 |
C++ conio.h 키보드 입력 받기 (0) | 2022.12.08 |
C++ Windows.h 콘솔창 지우기, Sleep (0) | 2022.12.08 |