일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 엑셀
- 자료구조
- getline
- EOF
- 프레임워크와 라이브러리의 차이
- c++
- 2557
- 알고리즘 공부방법
- k-eta
- vscode
- 매크로
- 백준
- correlation coefficient
- 장고란
- 표준 입출력
- Django Nodejs 차이점
- 시간복잡도
- Django란
- 이분그래프
- 입출력 패턴
- 구조체와 클래스의 공통점 및 차이점
- Django의 편의성
- 입/출력
- 연결요소
- string 메소드
- UI한글변경
- iOS14
- double ended queue
- scanf
- string 함수
Archives
- Today
- Total
Storage Gonie
(11) C++ vector 사용법 본문
반응형
# 벡터란
- Python의 list 같은 느낌, 길이를 변경할 수 있는 가변배열로 동적할당 동적제거가 가능.
# 헤더파일
# include <vector>
# 사용준비
# include <vector>
using namespace std;
int main()
{
vector<int> vec;
}
# 벡터 생성방법
# include <vector>
using namespace std;
int main()
{
vector<int> vec; // 비어있는 벡터 생성
vector<int> vec(5); // 5개의 원소를 0으로 초기화 시켜 만듬
vector<int> vec(5, 3); // 5개의 원소를 3으로 초기화 시켜 만듬
vector<int> vec2(vec); // vec 을 복사하여 벡터 생성
}
# 벡터에 값을 입력받는 방법
# include <vector>
using namespace std;
// 메모리 확보 후 차례대로 채워넣는 경우
int main()
{
int n;
cin >> n;
vector<int> vec(n);
for (int i = 0; i < n; i++)
cin >> vec[i];
}
// 메모리를 확보하면서 채워넣는 경우
int main()
{
vector<int> vec;
for (int i = 0; i < n; i++){
int a;
cin >> a;
vec.push_back(a);
}
}
# vec.push_back(), vec.pop_back()
- 한개의 원소 추가 및 제거
# include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back(2); // 숫자 2 추가
vec.pop_back(); // 마지막에 넣은 값 제거
}
# vec.insert()
- 특정 인덱스에 원소 추가
# include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.insert(2, 10); // index 2의 위치에 숫자 10 추가
}
# vec.erase()
- 특정 인덱스에 원소 제거, 혹은 범위 적인 원소 제거
# include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.erase(vec.begin()+5); // index 5의 원소를 제거한다.
vec.erase(vec.begin(), vec.begin()+3); // index 0~3의 원소를 제거한다.
}
# vec.front() 혹은 vec.back()
- 벡터의 front값을 혹은 back 값을 반환한다.
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> vec(4, 6);
cout << vec.front() << endl;
cout << vec.back() << endl;
}
# vec.swap()
- 두 벡터를 서로 스왑
# include <vector>
using namespace std;
int main()
{
vector<int> vec1;
vector<int> vec2;
vec1.swap(vec2); // 둘이 서로 바뀐 값을 가지게 됨.
}
# 벡터의 값을 출력하는 방법
- vec.pop_back()을 이용하면 출력불가.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec(5, 1); // 1로 초기화된 5개의 원소
// 방법1
for (int i = 0 ; i < vec.size(); i++)
cout << vec[i] << endl;
// 방법2
vector<int>::iterator it;
for (it = vec.begin(); it != vec.end(); it++)
cout << *it << endl;
// 방법3
for (auto it = vec.begin(); it != vec.end(); it++)
cout << *it << endl;
}
# vec.size()
- 원소의 개수를 반환한다.
vector<int> vec;
cout << vec.size() << endl;
# vec.empty()
- 비어있나 아닌가를 반환한다.
vector<int> vec;
cout << vec.empty() << endl;
# 2차원 벡터 사용법
- 2가지 방법이 있음.
vector<int> a[10]; // 1차원 벡터를 10개 생성. 즉, 2차원 벡터가 됨. {{}, {}, {], ..., {}}
a[0].push_back(3);
vector<vector<int>> a(10); // 1차원 벡터를 10개 생성. 즉, 2차원 벡터가 됨. {{}, {}, {], ..., {}}
a[0].push_back(3);
vector<vector<int>> a(10, vector<int>(10,0)); // 10*10 2차원 벡터로 0으로 초기화된 것
반응형
'알고리즘 > 문제해결을 위한 C++ 공부' 카테고리의 다른 글
(13) C++ algorithm헤더의 sort함수 (0) | 2019.04.26 |
---|---|
(12) C++ 람다(lambda) 함수 사용법 (0) | 2019.04.25 |
(10) C++ algorithm헤더의 find 함수 (0) | 2019.04.25 |
(9) C++ algorithm헤더의 count 함수 (0) | 2019.04.25 |
(8) C++ 구조체 사용방법(구조체, 클래스 차이점) (0) | 2019.04.22 |
Comments