이렇게 일단 만들고
number라는 숫자가 벡터에 체크하는 기능 (bool, 첫등장 iterator)
11로 나뉘는 숫자가 벡터에 있는 체크하는 기능.
홀수인 숫자의 개수는?
벡터에 들어가 있는 숫자들에 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;
}
내가 알아야 하는 부분은 myIter에다가
v.being() + i 하는 부분이다.
ref를 붙여서 실제 값을 고치게 하거나
벡터 데이터 자체를 바꾸거나
에서 이런식으로 코드를 한땀한땀 찾는 방식을 쓰기도 하지만
'아쉽다'
남이 짠 코드라고 했을 경우 이것을 보고 몇초만에 뭐하는 코드인지 알 수 있나?
또한 어떠한 이유에서 인지 다 리스트로 바꾼다고하면은
이런 [] 연산자나 begin + i이런게 안된다.
권장되는 방법은 '알고리즘' 사용하는 것이다.