오늘은 Day2 이다.
오늘 배우는 내용들도 기초적인 내용이라
추가적으로 적을 내용은 없을 것 같다.
그래서 오늘은 강의시간에 map, pair, queue에 대해 공부했다.
// Day2.cpp :
#include <iostream>
#include <vector>
#include <string>
#include <regex>
#include <map>
#include <utility>
#include <queue>
using namespace std;
typedef pair<int, int> pairTest;
struct comp
{
template<typename T> // 이건 처음보는데 이해하는데 좀 걸렸다.
bool operator()(const T& l, const T& r) const // 변수가 5개라고 치면, 1번과 2번을 비교해서 return이 True면 제자리에
{ // False면 1번과 2번의 위치를 바꾼다.
if (l.first == r.first) {
return l.second < r.second;
}
return l.first > r.first;
}
};
int main()
{
cout << "Day2" << endl;
// 지난주 공부한거 복습.
int nNum[5] = { 1,2,3,4,5 };
vector <int> vector1(&nNum[0], &nNum[5]);
for (vector<int>::iterator iter = vector1.begin(); iter != vector1.end(); iter++) {
cout << *iter << endl;
}
string str("Test123123Test");
str = regex_replace(str, regex("123"), "");
cout << str << endl;
smatch m;
if (regex_search(str, m, regex("Test"))) {
cout << "find String.";
}
cout << endl;
////////////////////////////////
// 오늘은 char 부터 배우는 듯.
///////////////////////////////
int nNum1 = 1;
int nNum2 = 0;
float fNum1 = 2.0f;
double dNum1 = 3.0;
char c = '1';
/*cout << "int의 사이즈는 : " << sizeof(int) << endl;
cout << "float의 사이즈는 : " << sizeof(float) << endl;
cout << "double의 사이즈는 : " << sizeof(double) << endl;
cout << "char의 사이즈는 : " << sizeof(char) << endl;
cout << (nNum1 == 1) << endl;*/
/*
while (nNum2 != 1 && nNum2 != 2 && nNum2 != 3)
{
cout << "Inser Number : (1: 아아, 2: 라떼, 3: 따아) ";
cin >> nNum2;
if (nNum2 == 1)
cout << "아아 주문" << endl;
else if (nNum2 == 2)
cout << "라떼 주문" << endl;
else if (nNum2 == 3)
cout << "따아 주문" << endl;
else
{
cout << "다시 주문하세요" << endl;
}
}
char ccc = 'a';
cout << "Inser Number : (a, A: 아아, b, B: 라떼, c, C: 따아) ";
cin >> ccc;
/*
switch (ccc){
case 'a':
case 'A':
cout << "아아 주문" << endl;
break; // break 빼면 입력 값 1 일 경우에 다음 break 만날때까지 처리를 다 하게 되어 있으니 조심하자.
case 'b':
case 'B':
cout << "라떼 주문" << endl;
break;
case 'c':
case 'C':
cout << "따아 주문" << endl;
break;
default:
cout << "다시 주문하세요" << endl;
break;
}
if (ccc == 'a' || ccc == 'A') {
cout << "아아 주문" << endl;
}
else if (ccc == 'b' || ccc == 'B') {
cout << "라떼 주문" << endl;
}
else if (ccc == 'c' || ccc == 'C'){
cout << "따아 주문" << endl;
}
else
cout << "다시 주문하세요" << endl;
cout << "nNum1 : ";
cin >> nNum1;
while (i < nNum1) {
printf("%d 번째 반복중.\n", i);
i++;
}
do {
printf("%d 번째 반복중.\n", i);
i++;
} while (i < nNum1);
printf("반복문 종료후 i의 값 : %d\n", i); */
/*for (int i = 0; i < 10; i++)
printf("%d 번째 실행\n", i);*/
int except_num = 2;
int sum = 0, end_num = 10;
for (int i = 1; i <= end_num; i++)
{
if (i % 2 != 0)
sum += i;
}
/*while (1) {
sum += nNum1;
if (nNum1 == end_num)
break;
nNum1++;
}*/
printf("1~10 까지 홀수의 합 = %d\n", sum);
cout << endl;
cout << "수업 내용 외" << endl;
/*
int result = (nNum1 < nNum2) ? nNum2 : nNum1;
cout << result << endl;
*/
/////////// 수업 내용 외 ////////////
/////////// 오늘은 map(pair)이랑 queue 공부해보기 ////////////
char* cc = (char*)str.c_str();
cout << "cc는 : " << cc << endl;
map<string, int> mapTest; // map은 중복을 허용하지 않고, 오름차순으로 자동 정렬한다.
//(만약 다른 방법으로 데이터를 내림차순으로 정렬하고 싶을 경우,
//데이터에 - (마이너스)를 붙여 삽입하여 처리하면 내림차순으로 정렬됩니다.)
mapTest.insert({str, nNum1});
mapTest.insert({"Test2", 2});
mapTest.insert({ "Test3", 3 });
mapTest.insert({ "Test4", 4 });
mapTest.insert({ "Test5", 5 });
if (mapTest.find("Test3") != mapTest.end()) { // for 문 같은거 안돌려도 map안에 값이 있으면 true 리턴하나보다.
cout << "find" << endl;
}
else {
cout << "not find" << endl;
}
for (auto iter : mapTest)/* (auto iter = mapTest.begin(); iter != mapTest.end(); iter++)*/{ // 연속적인 경우에 이런 for 문도 되나봄..신기.
cout << iter.first << iter.second << endl; // first는 첫번쨰 값(key), second는 두번째 값(Value)
} // 실행하면 TestTest가 가장 마지막으로 나오는데, 그 이유는 map은 Key 기준으로 오름차순으로 자동정렬한다. 그래서 그렇다.
// for문 이용해서 하면 위에 복습한 내용도 이렇게 바꿀수 있지 않을까..
for (auto iter : vector1) {
cout << iter << endl;
} // 오 된다.
// 지역 변수로 선언하면 map에 pair를 못 넣는듯 하다.
map<pairTest, int, comp> mapTest2 = { // insert 안하고 이렇게 넣어도 되는듯 하다.
{make_pair(0, 1), 2},
{make_pair(1, 2), 3},
{make_pair(2, 3), 4},
{make_pair(3, 4), 5},
{make_pair(4, 5), 6}
};
for (auto iter : mapTest2) {
auto key_pair = iter.first; // pair를 접근하기 위해 만드는 것 같다,
cout << key_pair.first << " " << key_pair.second << " " << iter.second << endl; // pair에 Key, pair에 Value, mapTest2에 Value
}
queue<string> q;
q.push(str);
string str2;
for (auto i = 0; i < q.size(); i++)
{
cout << q.front() << endl;
q.pop();
}
/////////////////////////////////////
}
'C, C++' 카테고리의 다른 글
언리얼 엔진을 배우기 위한 C++ 기초 과정 Day3 (0) | 2022.09.03 |
---|---|
언리얼 엔진을 배우기 위한 C++ 기초 과정 Day1 (0) | 2022.08.13 |