favicon Jay Lee DevLog

📚 목차

오늘은 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();
    }
    /////////////////////////////////////

}

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.