std::vector의 주요 특징:
- 동적으로 크기가 조절됩니다.
- 연속된 메모리를 할당하여 요소에 빠르게 접근할 수 있습니다.
- 요소를 추가하거나 제거할 때 자동으로 메모리를 할당하거나 해제합니다.
배열과의 차이점이기도함
자주 사용되는 멤버 함수:
- push_back(value): 벡터의 끝에 새로운 요소를 추가합니다.
- pop_back(): 벡터의 마지막 요소를 제거합니다.
- size(): 벡터에 저장된 요소의 수를 반환합니다.
- empty(): 벡터가 비어 있는지 확인합니다.
- clear(): 벡터의 모든 요소를 제거합니다.
- at(index) 또는 operator[]: 벡터의 특정 인덱스에 있는 요소에 접근합니다.
- front(): 벡터의 첫 번째 요소를 반환합니다.
- back(): 벡터의 마지막 요소를 반환합니다.
- reserve(n): 벡터의 용량을 미리 할당합니다.
- resize(n): 벡터의 크기를 조절합니다.
- insert(position, value): 벡터의 특정 위치에 요소를 삽입합니다.
- erase(position) 또는 erase(first, last): 벡터의 특정 위치의 요소를 제거하거나, 지정된 범위의 요소를 제거합니다.
1차원 벡터 선언
std::vector <int> array = {1, 2, 3, 4, };
2차원 벡터 선언 ( 3행 4열 )
std::vector<std::vector<int>> (3, std::vector<int>(4));
#include <iostream>
#include <utility> // std::forward를 사용하기 위해 필요함
#include <string>
#include <vector>
using namespace std;
typedef typename std::string string;
int main() {
// 1차원 벡터 만드는 법
// std::vector<int> vec; // int 타입을 저장하는 벡터 생성
std::vector <int> vec = {1, 2, 3, 4, }; // 처럼 초기화 해줄 수 도 있다.
// 요소 추가
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
// 요소 접근
std::cout << "첫 번째 요소: " << vec[0] << std::endl;
std::cout << "두 번째 요소: " << vec.at(1) << std::endl;
// 벡터의 크기 출력
std::cout << "벡터의 크기: " << vec.size() << std::endl;
// 벡터 순회
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
// 범위 기반 for 문을 사용한 순회
for (int value : vec) {
std::cout << value << " ";
}
std::cout << std::endl;
// 마지막 요소 제거
vec.pop_back();
// 벡터의 모든 요소 제거
vec.clear();
// 벡터가 비어있는지 확인
if (vec.empty()) {
std::cout << "벡터가 비어있습니다." << std::endl;
}
//--------------------------------------------------------
std::cout << "2차원 벡터 선언 (3행 4열)---------------------" << endl;
// 2차원 벡터 선언 (3행 4열)
std::vector<std::vector<int>> matrix(3, std::vector<int>(4));
// 2차원 벡터에 값 할당
for (int i = 0; i < matrix.size(); ++i) {
for (int j = 0; j < matrix[i].size(); ++j) {
matrix[i][j] = i * 4 + j;
}
}
// 2차원 벡터 출력
for (const auto& row : matrix) {
for (int val : row) {
std::cout << val << " ";
}
// 0 1 2 3
// 4 5 6 7
// 8 9 10 11
std::cout << std::endl;
}
return 0;
}
'언어 정리 > C++_개념_lib' 카테고리의 다른 글
std::move() (1) | 2024.01.22 |
---|---|
인수 전달 (0) | 2024.01.16 |
for-each (0) | 2024.01.16 |
enum, 구조체 (0) | 2024.01.16 |
정적변수, 전역변수 (0) | 2024.01.16 |
댓글