본문 바로가기
언어 정리/C++_개념_lib

vector

by 알 수 없는 사용자 2024. 1. 16.

std::vector의 주요 특징:

  • 동적으로 크기가 조절됩니다.
  • 연속된 메모리를 할당하여 요소에 빠르게 접근할 수 있습니다.
  • 요소를 추가하거나 제거할 때 자동으로 메모리를 할당하거나 해제합니다.

배열과의 차이점이기도함 


자주 사용되는 멤버 함수:

  1. push_back(value): 벡터의 끝에 새로운 요소를 추가합니다.
  2. pop_back(): 벡터의 마지막 요소를 제거합니다.
  3. size(): 벡터에 저장된 요소의 수를 반환합니다.
  4. empty(): 벡터가 비어 있는지 확인합니다.
  5. clear(): 벡터의 모든 요소를 제거합니다.
  6. at(index) 또는 operator[]: 벡터의 특정 인덱스에 있는 요소에 접근합니다.
  7. front(): 벡터의 첫 번째 요소를 반환합니다.
  8. back(): 벡터의 마지막 요소를 반환합니다.
  9. reserve(n): 벡터의 용량을 미리 할당합니다.
  10. resize(n): 벡터의 크기를 조절합니다.
  11. insert(position, value): 벡터의 특정 위치에 요소를 삽입합니다.
  12. 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

댓글