9-9. STL 실습

Crat3 ㅣ 2023. 6. 19. 18:55

0. 사전 준비

0~99의 숫자를 랜덤하게 뽑아 어떤 변수에 저장하고 그 변수의 값을 동적 배열에 하나씩 밀어넣는다.

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
using namespace std;

int main()
{
    srand(static_cast<unsigned int>(time(nullptr)));

    vector<int> v;

    int count = 0;
    bool found = false;

    for (int i = 0; i < 100; i++)
    {
        int num = rand() % 100; //0~99까지 100개의 숫자 중 하나 랜덤 저장
        v.push_back(num);
    }

 

Q.1) 어떤 숫자(number)가 벡터에 있는지 찾기(bool과 iterator 위치 반환)

        {
            int number = 50;

            vector<int>::iterator it = v.end();

            for(int i = 0; i < v.size(); i++)
            {
                if (v[i] == number)
                {   
                    found = true;
                    it = v.begin() + i;
                    cout << "found";
                    break;
                }
            }
        }

주의) 반복자의 위치도 그 숫자의 위치를 가르켜야 하기 때문에 처음에 벡터의 끝으로 지정해두고 i값의 증가에 따라서 반복자의 위치도 하나씩 증가하게 한다.

 

Q.2) 11로 나누어 떨어지는 숫자가 벡터에 있는지 찾기(bool과 iterator 위치 반환)

        {
            vector<int>::iterator it = v.end();

            for(int i = 0; i < v.size(); i++)
            {
                int data = v[i];
                int div = data % 11;
                if (div == 0)
                {
                    found = true;
                    it = v.begin() + i;
                    break;
                }
            }
            
        }

 

Q.3) 벡터 내에 홀수인 요소가 몇 개 있는가

	{
            vector<int>::iterator it = v.end();

            int data = 0;
            
            for (int i = 0; i < v.size(); i++)
            {   
                data = v[i];
                bool odd = data % 2; // 홀수면 true를 반환
                
                if(odd)
                    count++;
            }
        }

        cout << "홀수는 " << count << "개 있습니다.";

불리언 odd는 나눗셈 결과의 나머지를 저장하는데, 2로 나누었기 때문에 결과가 0 아니면 1이다.

이 때 2로 나눈 나머지가 1이면 홀수라는 의미이므로 odd가 홀수라면 1을 반환하게 된다.

 

Q.4) 벡터 안의 모든 요소에 3을 곱하기

        for (int i = 0; i < v.size(); i++)
        {
            int temp = 0;
            temp = v[i] * 3;
            v[i] = temp;
        }

'기초 C++ 스터디 > 예제' 카테고리의 다른 글

9-5. STL - List 구현하기(실습)  (0) 2023.06.14
9-3. STL - Vector 구현하기 (실습)  (0) 2023.06.14
7-3. 디버깅 예제 #8 ~ 10  (0) 2023.06.07
7-2. 디버깅 예제 #5 ~ 7  (0) 2023.06.07
7-1. 디버깅 예제 #1 ~ 4  (0) 2023.06.07