ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ Container, 유용한 함수
    Algorithm/Grammar 2021. 6. 8. 13:13
    728x90

    문자열

     


    - 문자열 부분 추출시 => substr(인덱스, 글자 수)

     

     

        -> 문자열 추출에 매우 유용하다. 

     

        -> 글자 수에 인자를 넣어주지 않으면 index부터 문자 끝까지를 반환한다.

     

     

    - 숫자를 문자열 전환 => to_string(숫자)

     

    int a = 123;
    string str1 = to_string(a); // 123이 string "123"로 변환되어 str1에 저장된다.

     

    - 문자열을 숫자로 변환 => stoi(str)

     

    string str_a ="7";
    string str_b ="7.02";
    string str_c ="3.14";
    string str_d = "2300000000";
      
    int after_a = stoi(str_a); // "7"을 int형 7로 바꿔줌
    double after_b = stod(str_b); // "7.02"를 double형 7.02로 바꿔줌
    float after_c = stof(str_c); // "3.14"를 float형 3.14로 바꿔줌
    long int after_d = stof(str_d); // "2300000000"을 long int형으로 바꿔줌

     

    - 문자열 일부 대체 => str.replace(시작주소, 끝주소, 바꿀 문자열)

     

        -> 시작 주소부터 끝 주소 직전 까지를 문자열로 치환 해 준다. 

     

    string str1 = "TESTT";
    str1.replace(str.begin()+1, str.begin()+4, "aa"); // str1 == "TaaT"

     

    - String의 입출력

     

    string str;
    cin >> str; //공백(space) 이전까지의 문자열 입력
    getline(cin, str); //공백 포함 한 줄 전체 입력

     

    - String의 비교 => str.compare

     

      => 문자열 비교(같으면 0, 비교할 문자열이 작으면1, 크면 -1 반환)

     

    str.compare("비교 문자열");

     

    - 숫자인지 체크하는 함수 => isdigit

     

    string str = "123a";
    cout << isdigit(str[0]); // 4(0 이외의 값)
    cout << isdigit(str[3]); // 0(false)

     

    벡터에서 원하는 값 존재 유무 => find(v.begin(), v.end(), "값")

     

     

        -> 만약 값이 존재하지 않는다면, v.end()를 return

     

        -> 존재 할 시 해당 원소를 가리키는 반복자를 return

     

     

    중복 없이 값을 저장하고 싶다면 => unordered_set<자료형> us;

     

     

        -> 중복 상관 없다면 vector를 쓰겠지만, 중복을 허용하지 않는 경우에 쓰인다.

     

        -> us.insert('값')시 값이 삽입되며, 만약 이미 존재하는 값일 경우 해당 명령은 자동으로 무시된다.

     

     


     

    key - value 매칭이 필요하다면 (특히 문자열) => unordered_map<자료형> um;

     

     

        -> 중복 저장 x

     

        -> 만약 매칭을 시키면서 정렬도 필요하면 map<자료형> container를 쓴다.

     

     

    문자열 전체를 대문자로 or 소문자로 => transform

     

        -> transform(str1.begin(), str1.end(), str1.begin(), ::toupper);

     

        -> transform(str1.begin(), str1.end(), str1.begin(), ::tolower);

     

        -> 알파벳이 아닌 것들은 무시한다.

     

     


     

    소수점 연산 

     

        -> double형과 int형을 ' / ' 연산 하면 소수점 연산이 잘 된다.

     


     

    2차원 vector n x n 사이즈로, 0으로 초기화

     

        -> vector<vector<int>> v(n,vector<int> (n,0); 

     


    sort시 compare 함수

     

    - sort(시작주소, 끝주소, custom 함수 compare)

     

    - vector, array 모두 사용 가능.

     

    - compare의 경우, true시 해당 순서를 유지하고 false시 순서를 뒤집는다.

     

    ex)

    bool compare(int a, int b){
    	//오름차순
        return a < b;
        /* 내림차순
        return b > a; 
        */
    }

    'Algorithm > Grammar' 카테고리의 다른 글

    자바스크립트 코딩테스트 주요 문법  (0) 2021.06.11

    댓글

Designed by Tistory.