블로그 이미지
가은파

카테고리

분류 전체보기 (12)
IT이야기들 (2)
Android와Java (0)
알고리즘 (2)
UnityGameForMySon (2)
Total
Today
Yesterday

달력

« » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

C++ Set example

카테고리 없음 / 2021. 9. 19. 18:23

#include <iostream>
#include <set>

using namespace std;

#define CLASS_STUDENT 30
typedef struct Student{
    int mID;
    int mScore;
    string name;

    bool operator< (const Student& st) const {
        return st.mScore < mScore ? true : false;
    }
}setStudent[CLASS_STUDENT];

set<Student>::iterator studentIters[CLASS_STUDENT];


int main()
{
    set<int> s;
    set<int> k;
    //set은 중복을 허용하지 않고, 순서를 가지고 있다~!!!
    //default오름차순 ~~!!!
    set<Student> mClass; 

    for (auto& a : studentIters) {
        a = mClass.end();
    }

    studentIters[1] = mClass.insert({ 1,100, "Dunkin" }).first;
    studentIters[5] = mClass.insert({ 5,70, "CoCo" }).first;
    studentIters[8] = mClass.insert({ 8,90, "Charls" }).first;
    studentIters[25] = mClass.insert({ 25,30, "Memphis" }).first;
    studentIters[7] = mClass.insert({ 7,40, "Couman" }).first;
    
    //같은 키값을 넣으면, 넣은 값은 그냥 버림, 리턴은 기존값 iterator를 준다.
    studentIters[8] = mClass.insert({ 8,40, "Coumano" }).first; 
    studentIters[9] = mClass.insert({ 9,60, "Hojberg" }).first;

    cout << "5번 학생 이름" << studentIters[5]->name;

    cout << "** ID별 table로 ID순 정렬된 원소를 출력\n";
    for (auto& a : studentIters) {
        if (a == mClass.end()) {
            cout << "| 없다";
        } else
            cout << "| "<<a->mID << " " << a->name << " " << a->mScore;
    }
    cout <<"\n";

    cout << "** 정렬된 원소를 출력\n";
    set<Student>::iterator st_iter;
    for (st_iter = mClass.begin(); st_iter != mClass.end(); st_iter++)
    {
        cout << " | "<<st_iter->mID << " " << st_iter->name << " " << st_iter->mScore ;
    }

    set<Student>::iterator st_iter_find;


    cout << "\nFind 결과의 이름: " << mClass.find({ 9,60, "Hojberg" })->name;
    cout << "\nFind 이름을 다르게 입력해도 : " << mClass.find({ 7,60, "KinKong" })->name;


    cout << "\n9번 삭제한 뒤 return되는 iterator : " << mClass.erase(studentIters[9])->mID;
    cout << "\n** 9번 삭제한 뒤 정렬된 원소를 다시 출력\n";
    for (st_iter = mClass.begin(); st_iter != mClass.end(); st_iter++)
    {
        cout << " | " << st_iter->mID << " " << st_iter->name << " " << st_iter->mScore;
    }

    set<int>::iterator iter;

    s.insert({ 1,100 });
    s.insert({ 5,20 });
    s.insert({ 8,20 });
    s.insert({ 25,20 });
    s.insert({ 7,20 });
    s.insert({ 9,20 });

    cout << "\n\n(정수편)** 정렬된 원소를 출력\n";
    for (iter = s.begin(); iter != s.end(); iter++)
    {
        cout << *iter << " ";
    }

    cout << "\n** 8이 존재하면 8보다 큰 원소를 출력\n";
    for (iter = s.find(8); iter != s.end(); iter++)
    {
        cout << *iter << " ";
    }

    cout << "\n** 333이 존재하나?\n"; 
    iter = s.find(333);
    if (iter != s.end()) {
        cout << *iter << " : 존재 " << endl;
    }
    else {
        cout << "존재하지 않음 " << endl;
    }
    
    cout << "\n** 넣고 다시 확인\n";
    s.insert(333);
    iter = s.find(333);
    if (iter != s.end()) {
        cout << *iter << " : 존재 " << endl;
    }
    else {
        cout << "존재하지 않음 " << endl;
    }

    k.insert(5);
    k.insert(20);


    k.swap(s);

    cout << "** k랑 swap 한뒤 원소를 출력\n";
    for (iter = s.begin(); iter != s.end(); iter++)
    {
        cout << *iter << " ";
    }

}

Posted by 가은파
, |

최근에 달린 댓글

글 보관함