컴퓨터/C++
C++ STL에서 제공하는 vector 클래스를 조금 더 풍부하게 사용하는 방법에 대해서 알아보도록 합시다.
이 vector 클래스 자체를 배열의 형태로 사용하는 방법과 2차원 vector를 사용하는 예제를 통해 조금 더 vector와 C++ 문법에 익숙해져 보도록 합시다.
vector클래스가 뭔지 모른다면 이전 글을 참고 바랍니다.
vector를 선언하여 vector를 배열로 사용하는 방법입니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
vector<int> vector[3];
vector[0].push_back(1);
vector[0].push_back(2);
vector[0].push_back(3);
vector[1].push_back(1);
vector[1].push_back(2);
vector[2].push_back(1);
vector[2].push_back(2);
vector[2].push_back(3);
vector[2].push_back(4);
vector[2].push_back(5);
for (int i = 0; i < 3; i++) {
cout << "vector" << i << endl;
for (int j = 0; j < vector[i].size(); j++) {
cout << vector[i].at(j) << endl;
}
cout << endl;
}
return 0;
}
vector는 3개의 배열로 고정되나 vector안의 담기는 자료는 자유롭게 변경이 가능합니다.
vector의 클래스 자체도 vector로 선언하면 조금 더 자유로운 자료구조의 형태로 사용할 수 있습니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
vector<vector<int>> vector1;
vector<int> subvector0;
vector<int> subvector1;
vector<int> subvector2;
vector1.push_back(subvector0);
vector1.push_back(subvector1);
vector1.push_back(subvector2);
vector1.at(0).push_back(1);
vector1.at(0).push_back(2);
vector1.at(0).push_back(3);
vector1.at(1).push_back(2);
vector1.at(1).push_back(3);
vector1.at(1).push_back(4);
vector1.at(1).push_back(5);
vector1.at(2).push_back(5);
vector1.at(2).push_back(6);
vector1.at(2).push_back(7);
for (int i = 0; i < vector1.size(); i++) {
cout << "vector" << i << endl;
for (int j = 0; j < vector0[i].size(); j++) {
cout << vector0[i].at(j) << endl;
}
cout << endl;
}
return 0;
}
이처럼 2차원 배열같이 하지만 추가적인 동적 할당이 자유로운 2차원 vector를 사용할 수 있습니다.
위의 예제처럼 계속해서 1차원 vector를 만들어서 넣어주는 것은 비효율 적입니다.
따라서 생성자를 통해 처음부터 vector클래스를 셋팅해 줄 수 있습니다.
vector<vector<int>> vector1(3,vector<int>());
//동일한 동작
vector<int> subvector0;
vector<int> subvector1;
vector<int> subvector2;
vector1.push_back(subvector0);
vector1.push_back(subvector1);
vector1.push_back(subvector2);
2차원 vector를 사용하면 자유롭게 x y축을 늘릴수 있는 데이터 구조를 사용할 수 있게 됩니다.
C++ - STL vector 클래스 (손쉬운 동적배열) (0) | 2022.03.21 |
---|---|
C++ - STL라이브러리 piar (0) | 2022.03.17 |
C++ - STL(Standard Template Libary) (0) | 2022.03.17 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet