• [C++] Vector 문법 복습 및 예제 풀이

    2023. 9. 5.

    by. KAEY

     


    ✅ Vector 를 사용하여 정수를 저장하는 빈 벡터를 선언해보기.

    ✅ 사용자로부터 5개의 정수를 입력받아, 벡터에 추가하기.

    ✅ 벡터의 크기를 출력하기.

    ✅ 벡터의 모든 원소를 출력하기.

    ✅ 벡터 내에 있는 원소 중 가장 큰 값을 찾아내기.

    ✅ 벡터의 모든 원소를 두 배로 곱하여 출력하기.

    ✅ 인덱스를 입력받고, 해당 인덱스의 원소 제거하기.

    ✅ 인덱스를 입력받아, 해당 인덱스에 새로운 원소 값을 삽입하기.

     

     


    [C++] Vector의 기본 개념 사용법, 함수, 이중 Vector 선언 후 배열 :: GG (tistory.com)

     

    [C++] Vector의 기본 개념 사용법, 함수, 이중 Vector 선언 후 배열

    자동으로 메모리를 할당해주는 배열 배열은 한 번 크기가 정해지면 그 크기가 고정되어 바뀌지 않음. vector를 사용하면 포인터를 쓰지 않아도 크기를 추후에 지정할 수 있음. 뿐만 아니라, 중간

    kaey.tistory.com

    위 글에서 벡터 문법을 사용해보는 실습 입니다.

     

     

     


    ✅ Vector 를 사용하여 정수를 저장하는 빈 벡터를 선언해보기.

     

    vector <int> arr(n);

    위의 코드에서는 n으로 작성되었지만, n 대신의 정수 값을 입력하시면 됩니다.

    문제에서는 제가 지정한 수인 5 를 입력하여 5개의 정수를 저장할 수 있는 벡터로 선언하였습니다.

    n의 값은 사용자에게 입력을 받은 값을 넣을 수도 있습니다.

     

     


    ✅ 사용자로부터 5개의 정수를 입력받아, 벡터에 추가하기.

    	cout << "\n\n배열을 요소 5개 입력하세요. : ";
    	for (int i = 0; i < 5; i++) {
    		int a = 0;
    		cin >> a;
    		arr[i] = a;
    	}

    for문을 통해 벡터의 크기 만큼 사용자에게 반복하여 값을 입력받아,

    이를 벡터에 저장할 수 있도록 하였습니다.

     

     


    ✅ 벡터의 크기를 출력하기.

    .size(); //v의 길이 반환

    vector.size() 함수를 통해 간단하게 벡터의 크기를 알 수 있습니다.

     

     

     


    ✅ 벡터의 모든 원소를 출력하기.

    	for (int j = 0; j < 5; j++) {
    		cout << arr[j] << " ";
    	}

    1차원 벡터의 경우 한 번의 반복문을 반복함으로 벡터의 요소를 모두 추출할 수 있습니다.

     

     


    ✅ 벡터 내에 있는 원소 중 가장 큰 값을 찾아내기.

    #include <algorithm>
    
    sort(arr.begin(), arr.end());

    max 변수를 선언하여 반복문을 통해 하나씩 비교하여 가장 큰 값을 알아낼 수도 있지만,

    알고리즘 헤더를 추가하여 sort를 통해 오름차순으로 정렬하였습니다.

    따라서 sort를 통해 정렬된 벡터의 가장 뒤에 있는 원소는 해당 벡터에서 가장 큰 값이 됩니다.

     

     

    vector.back()

    .back() // 백터의 마지막 요소 접근

    그 후 마지막 원소에 접근하는 문법으로 마지막 원소를 출력할 수 있도록 하면,

    해당 출력 값은 벡터에서 가장 큰 값이 됩니다.

     

     


    ✅ 벡터의 모든 원소를 두 배로 곱하여 출력하기.

    	for (int i = 0; i < 5; i++) {
    		arr[i] = arr[i] * 2;
    	}

    단순히 2배를 하는 요구사항이기에 각각의 벡터를 순환하며, 그 자리의 원소에 해당 원소의 2배의 값을 저장하는 방법을 채택했습니다.

     

     


    ✅ 인덱스를 입력받고, 해당 인덱스의 원소 제거하기.

    erase(시작 iterator, 마지막 iterator) // 시작 위치부터 마지막 위치 전까지의 원소를 삭제
    v.erase(v.begin() + 1, v.begin() + 3); // 1 ~ 2번 인덱스 삭제

    vector.erase() 문법을 통해 사용자에게 입력받은 인덱스의 원소를 제거할 수 있습니다.

    다만 하나의 원소를 입력받기에, begin() + index, begin() + index+1 을 사용하면, 

    해당 위치의 원소만 제거할 수 있습니다.

     

     

     


    ✅ 인덱스를 입력받아, 해당 인덱스에 새로운 원소 값을 삽입하기.

    .insert(v.begin()+index, 원소); // index에 입력된 정수의 위치에 원소를 삽입

    vector.insert() 를 통해 index 위치를 지정하고 원소를 삽입할 수 있습니다.

     

     

     

    체크 포인트

    erase 와 insert 모두 선언된 벡터의 크기를 벗어날 수 없습니다.

    따라서 해당 크기 보다 높은 수, 혹은 0이나 음수를 입력하게 되면 오류가 발생할 수 있습니다.

     

     


    해당 실습에서 요구되는 사항들이 잘 출력된 모습입니다.

     

     


    🎉해당 글의 내용은 "포스코 x 코딩온 스마트 팩토리 과정 수업" 에서의 수업 자료 및 실습 과제 등에서 일부 발췌되어 작성 되었습니다.

     


    댓글 (비로그인 댓글 허용하지 않습니다.)