STL 연습문제

CJB_ny·2022년 8월 26일
0

C++ 정리

목록 보기
71/95
post-thumbnail

이렇게 일단 만들고

1번

number라는 숫자가 벡터에 체크하는 기능 (bool, 첫등장 iterator)

2번

11로 나뉘는 숫자가 벡터에 있는 체크하는 기능.

3번

홀수인 숫자의 개수는?

4번

벡터에 들어가 있는 숫자들에 3을 곱해주세요

전체 코드

#include <iostream>
#include <deque>
#include <vector>
using namespace std;

// deque
// map : 균형 이진 트리 AVL
// 연습문제

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

	vector<int> vec;

	for (int i = 0; i < 100; ++i)
	{
		int num = rand() % 100;
		vec.push_back(num);
	}

	for (vector<int>::iterator myIter = vec.begin(); myIter != vec.end(); ++myIter)
	{
		cout << *myIter << endl;
	}


	// 1번 : number라는 숫자가 벡터에 체크하는 기능
	{
		int num = 50;
		vector<int>::iterator myIter1 = vec.begin();

		for (; myIter1 != vec.end(); ++myIter1)
		{
			if (num == *myIter1)
			{
				cout << "num 찾음: " << *myIter1 << endl;
				break;
			}
		}

	}


	// 2번 : 11로 나뉘는 숫자가 벡터에 있는지 체크하는 기능
	{
		vector<int>::iterator myIter2 = vec.begin();

		for (; myIter2 != vec.end(); ++myIter2)
		{
			if (0 == *myIter2 % 11)
				break;
		}
		
		cout << "11로 나뉘는 수 있음 : " <<*myIter2 << endl;
	}



	// 3번 : 홀수인 숫자의 갯수는?
	{
		vector<int>::iterator myIter3 = vec.begin();
		int count = 0;

		for (; myIter3 != vec.end(); ++myIter3)
		{
			if (1 == *myIter3 % 2)
				++count;
		}

		cout << "홀수 갯수 : " << count << endl;
	}

	// 4번 : 벡터에 들어가있는 숫자들에 3을 곱해주세요
	{
		vector<int>::iterator myIter4 = vec.begin();

		cout << "----- 3곱하기전 -----" << endl;
		for (; myIter4 != vec.end(); ++myIter4)
			cout << *myIter4 << endl;

		myIter4 = vec.begin();

		for (; myIter4 != vec.end(); ++myIter4)
			(*myIter4) = (*myIter4) * 3;
		
		myIter4 = vec.begin();

		cout << "----- 3곱하고 난 후 -----" << endl;
		for (; myIter4 != vec.end(); ++myIter4)
			cout << *myIter4 << endl;
		
	}


	return 0;
}

풀이

1번

내가 알아야 하는 부분은 myIter에다가

v.being() + i 하는 부분이다.

2번

3번

4번

방법 1

ref를 붙여서 실제 값을 고치게 하거나

방법 2

벡터 데이터 자체를 바꾸거나

실무

에서 이런식으로 코드를 한땀한땀 찾는 방식을 쓰기도 하지만

'아쉽다'

남이 짠 코드라고 했을 경우 이것을 보고 몇초만에 뭐하는 코드인지 알 수 있나?

또한 어떠한 이유에서 인지 다 리스트로 바꾼다고하면은

이런 [] 연산자나 begin + i이런게 안된다.

권장되는 방법은 '알고리즘' 사용하는 것이다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글