[C++] 주요 vector 함수

2025. 5. 6. 00:32·C++

★ push_back(value) : 마지막에 요소 추가

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2};

    cout << "push_back 전 : ";
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << v[i] << " ";
    }
    
    v.push_back(3); // 마지막에 3 추가
    cout << "\npush_back 후 : ";
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << v[i] << " ";
    }
    cout << endl;

    return 0;
}

 

 

★ push_back() : 마지막 요소 제거

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3};

    cout << "pop_back 전 : ";
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << v[i] << " ";
    }
    
    v.pop_back();
    cout << "\npop_back 후 : ";
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << v[i] << " ";
    }
    cout << endl;


    return 0;
}

 

 

★ size() : 요소 개수 반환

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3};
    cout << "size : " << v.size() << endl;

    return 0;
}

 

 

★ empty() : 비어 있는지 확인  |  clear() : 모든 요소 제거

  • 비어있으면 1, 아니면 0 반환
#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v1 = {1, 2, 3};
    if (!v1.empty())
    {
        cout << v1.empty() << endl;
        cout << "v1 벡터가 비어있지 않아요!\n";
    }
    
    v1.clear(); // 벡터 모든 요소 제거
    if (v1.empty())
    {
        cout << v1.empty() << endl;
        cout << "v1 벡터가 비었어요!\n";
    }

    return 0;
}

 

 

 

★ at(index) : 인덱스로 접근 (범위 검사 포함)

  • vector는 인덱싱이 가능하다고 했지? 길이가 3인 벡터가 있다고 가정해보자!
  • 이때 v[100]을 사용하면 오류없이 이상한 값(?)에 접근이 가능해,,,,
  • 근데 v.at(100)을 사용하면 예외가 발생해!!!!!!!!!!
#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3};
    
    cout << "v[2] : " << v[2] << endl;
    cout << "v[100] : " << v[100] << endl;
    cout << "v.at(100) : " << v.at(100) << endl;

    return 0;
}

 

 

 

★ insert(position, value) : 중간에 요소 삽입  |  begin() : 시작 위치  |  end() : 마지막 위치

#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3};
    
    v.insert(v.begin() + 1, 100); // 처음(0) 위치 + 1 ==> {1, 2, 3}에서 1 다음 위치
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << i << "번째 요소 : " << v[i] << endl;
    }
    
    cout << "==================\n";

    v.insert(v.end() - 1, 200); // 마지막(3) 위치 - 1 ==> {1, 100, 2, 3}에서 3 이전 위치
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << i << "번째 요소 : " << v[i] << endl;
    }

    return 0;
}

 

 

★ erase(position) : 요소 하나 제거  |  erase(start, end) : 범위 제거

  • 범위 제거는 end - 1 번째 요소까지 제거
#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3, 4, 5, 6};
    
    v.erase(v.begin() + 1); // 1번째 요소 '2' 제거

    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << i << "번째 요소 : " << v[i] << endl; 
    }

    cout << "==================\n";

    v.erase(v.begin(), v.begin() + 2); // 0번째에서 1번째 요소 '1', '3' 제거
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << i << "번째 요소 : " << v[i] << endl; 
    }

    return 0;
}

 

 

 

★ resize(n) : 크기 조절

  • 초기값 0으로 채움
  • resize(n, value) : n크기로 resize하고, 초기값을 value로 채움
#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v = {1, 2, 3};

    v.resize(5); // 크기 5로 resize ==> 3, 4번째 요소 0으로 초기화
    for (int i = 0 ; i < v.size() ; i++)
    {
        cout << i << "번째 요소 : " << v[i] << endl; 
    }
    
    return 0;
}

 

 

★ reserve(n) : 용량 미리 확보 (재할당 줄임)

  • 이 부분은 다음 글에서 다시 설명할게유,,,,,

 

★ swap() : 두 벡터 간 요소 교환

  • 교환하려는 두 벡터의 데이터형이 같아야 함!!!
  • 길이는 상관 없음
#include <iostream>
#include <vector>

int main()
{
    using namespace std;

    vector<int> v1 = {1, 2, 3};
    vector<int> v2 = {4, 5};

    v1.swap(v2);
    cout << "v1 벡터\n";
    for (int i = 0 ; i < v1.size() ; i++)
    {
        cout << i << "번째 요소 : " << v1[i] << endl; 
    }

    cout<< "\nv2 벡터\n";
    for (int i = 0 ; i < v2.size() ; i++)
    {
        cout << i << "번째 요소 : " << v2[i] << endl; 
    }
    cout << endl;
    
    return 0;
}

 

 

★ sort() : 정렬

  • <algorithm> 헤더 사용
  • 기본은 오름차순이지만, 정렬에 사용할 함수를 사용하여 내림차순 정렬도 가능 (C언어에서 qsort처럼!)
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    using namespace std;

    vector<int> v1 = {1, 6, 8, 3, 5, 4, 7};

    sort(v1.begin(), v1.end());
    for (int i = 0 ; i < v1.size() ; i++)
    {
        cout << i << "번째 요소 : " << v1[i] << endl; 
    }

    return 0;
}



'C++' 카테고리의 다른 글

[C++] vector 함수 - size | capacity | resize | reserve  (0) 2025.05.06
[C++] array 객체와 vector 객체  (0) 2025.05.06
[C++] 파일 입출력 (.txt 파일)  (0) 2025.05.05
[C++] cin.fail() | cin.clear() | cin.ignore()  (0) 2025.05.05
[C++] 문자열 | string을 전달인자로 하는 함수  (0) 2025.05.02
'C++' 카테고리의 다른 글
  • [C++] vector 함수 - size | capacity | resize | reserve
  • [C++] array 객체와 vector 객체
  • [C++] 파일 입출력 (.txt 파일)
  • [C++] cin.fail() | cin.clear() | cin.ignore()
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (64)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
      • QT (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    순서도
    파이썬예제
    조건문
    파이썬반복문
    if문
    C
    파이썬게임
    파이썬 숫자야구
    c언어 scanf
    while문
    else if
    파이썬조건문
    코딩
    c우선순위
    for문
    c언어
    Python
    반복문
    파이썬
    문자열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[C++] 주요 vector 함수
상단으로

티스토리툴바