본문 바로가기
  • Let's study
알고리즘/C++

[알고리즘] Algorithm 헤더 - C++

by 코딩고수이고파 2021. 9. 19.

min / max


min(a,b): a와 b 중에 제일 작은 수를 반환

max(a,b): a와 b 중에 제일 큰 수를 반환

원래는 (a,b) 안에 2개의 값만 넣을 수 있지만 ({a,b,c,d}) 형식으로 사용하면 여러 값의 크기를 비교할 수 있다.

#include<iostream>
#include<algorithm>

using namespace std;

int main(){
    cout<< min(4,2) << '\n';	//2
    cout<< max(9,5) << '\n';	//9
    
    cout<< min({1,4,3,6}) << '\n';	//1
    cout<< max({7,9,4,10}) << '\n';	//10
}

 

min_element / max_element


min_element(first, last): first부터 last Iterator 이전까지에서 최솟값을 가리키는 Iterator 반환

max_element(first, last): first부터 last Iterator 이전까지에서 최댓값을 가리키는 Iterator 반환

반복자에 해당하는 값을 출력하고 싶으면 앞에 *를 붙여준다.

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main(){
    vector<int>v={3,5,4,8,11};
    int arr[]={6,4,8,5};
    
    cout<< *min_element(v.begin(), v.end()) << '\n';	//3
    cout<< *max_element(v.begin()+1, v.end()-2) << '\n';	//1~2 인덱스 중에 큰 값=5
    cout<< *min_element(arr, arr+4) << '\n';	//4
}

 

swap


swap(a,b): 두 변수에 저장되어있는 값을 교환

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main(){
    int a=4, b=10;
    swap(a,b);
    cout<< a <<' '<< b << '\n';	//10 4
    
    vector<int>v1(6);
    vector<int>v2(3);
    swap(v1, v2);
    cout<< v1.size() <<' '<< v2.size() << '\n';	//3 6
}

 

swap_ranges


- 구간을 바꾸는 함수

swap_ranges(first, last, second): 첫번째 배열의 first부터 last Iterator 이전까지의 개수만큼 두번째 배열의 second부터 시작하여 앞의 개수만큼 값을 교환한다.

#include<iostream>
#include<algorithm>

using namespace std;

int main() {
	int arr1[5] = { 1, 2, 3, 4, 5 };
	int arr2[5] = { 6, 7, 8, 9, 10 };
	swap_ranges(arr1, arr1 + 3, arr2);

	for (int i = 0; i<5; i++) 
    	cout << arr1[i] << ' ';	//6 7 8 4 5
	cout<<'\n';
    
	for (int i = 0; i<5; i++) 
    	cout << arr2[i] << ' ';	//1 2 3 9 10
}

 

reverse


reverse(first, last): first부터 last Iterator 이전까지 역순으로 뒤집는다.

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main() {
	vector<int>v = { 1,5,8,2,10,0 };

	reverse(v.begin(), v.end());
	for(int i=0;i<v.size();i++)
		cout << v[i] << ' ';	//{0 10 2 8 5 1}
	cout << '\n';

	reverse(v.begin() + 1, v.begin() + 4);
	for (int i = 0; i<v.size(); i++)
		cout << v[i] << ' ';	//{0 8 2 10 5 1}
}

 

fill


fill(first, last, val): first부터 last Iterator 이전까지 val 값으로 채운다.

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main(){
    vector<int>v = {1,5,8,2,10,0};
    int arr[5]={1,5,7,3,9};
    
    fill(v.begin(), v.begin()+4, -1);
    for(int i=0; i<v.size(); i++){
    	cout<<v[i]<<' ';	//{-1 -1 -1 -1 10 0}
    }
    cout<<'\n';
    
    fill(arr, arr+5, 100);
    for(int i=0; i<5; i++){
    	cout<<arr[i]<<' ';	//{100 100 100 100 100}
    }
}

'알고리즘 > C++' 카테고리의 다른 글

[알고리즘] 선택 정렬 - C++  (0) 2021.09.22
[알고리즘] 버블 정렬 - C++  (0) 2021.09.22
[알고리즘] C++ Vector 사용법  (0) 2021.09.09
[알고리즘] C++ 기본  (0) 2021.09.09
[알고리즘] C++ 스택, 큐, 덱  (0) 2021.09.08

댓글