개발자 데뷔!

[C/C++ 2.4] 알고리즘 STL 본문

알고리즘 & 자료구조/알고리즘 (Algo)

[C/C++ 2.4] 알고리즘 STL

물꼮이 2022. 5. 5. 22:12

자료형 알아보기

// 라이브러리
#include <typeinfo>

// 사용
cout << typeid(a).name();

* string에서 원소idx로 하나씩 접근한다면 그 원소 하나는 -> char 

 

 


char 문자열 

// 라이브러리 포함 
#include<cstring>

// strcmp 함수 
strcmp(a,b)

* char 한글자는 == 으로 비교 ! 

string 함수

// erase
str.erase(시작위치, 크기)
str.erase(str.begin() + 2)	// 특정위치의 문자 지우기 (char pointer 이용해)
str.erase(str.begin(), str.begin()+2)	// 특정범위의 문자지우기

// insert
str.insert(시작위치, 추가할 문자열)

// append
str.append(추가할 문자열)	// 제일 뒤에 따라붙음 // char 안되고 string 만됨

 

 

 

SubString, Parsing

string a = "hihihihi";

// find
a.find(찾을 string, 시작위치);

// substr 사용
a.substr(시작위치, 크기);

// replace 사용
a.replace(시작위치, 길이, 치환할문자열)
//ex)
	int a = 0;
	while (1) {
		a = new_id.find("..", a);
		if (a == -1)
			break;
		new_id.replace(a, 2, ".");
		
	}

 

 

 

 


vector iterator

// iterator
for(auto it = v.begin(); it != v.end(); it++)
	cout<< *it;

* vector는 erase, 또는 pop 연산이 일어날 시, 크기가 바뀌므로, 원소idx 접근 보다는 auto로 접근! 

vector iterator + erase 

=> erase를 진행할 땐, 전체 크기 size가 바뀌므로 조심해줘야 한다!! 

	for (auto it = v.begin(); it != v.end();) {	// it++을 하지 않고 기다림 
		if (!checke(*it)) 
			it = changed.erase(it);	// 지우고, 순환자를 다음 위치로 참조해줘야함. 
		else
			it++;	// 지우는 일이 없을 때만 ++
	}

 

2차원 vector

// 2차원 vector를 size와 함께 지정
vector<vector<int>> graph(size, vector<int>(size,0));

 

map

// 라이브러리 포함
#include <map>

// 선언
map<string, int> match;

// 삽입
map.insert(pair("hi",1));
map.insert(make_pair("hi",1));

// 값 찾기
map.at("hi");	// key값을 넣음

순열 next_permutation 

 => 모든 경우의 수 다 출력해줌 

  vector자체의 값을 재정렬 해줌 . 

  *** do-while로 안하고 그냥 while로 하면, 원래의 vector값은 빼고 나오므로 주의 !! ***

#include<algorithm>
...

    do{
        
        for(int i=0;i<weak.size();i++){
            cout<<weak[i]<<" ";
        }
        cout<<"\n";
    }while(next_permutation(weak.begin(), weak.end()));
 ...

 

최소값 min

 => a,b 중에 더 작은값을 최솟값으로 저장함 

int m = min(a,b);

 

 

SORT

=> vector를 sort 함

sort(vector.begin(), vector.end(), -)

 

isdigit

=> 숫자인지 check 해주는 함수