본문 바로가기
C++

[c++] STL Algorithm

by 코모's 2021. 8. 18.
반응형

#include <algorithm> 에서 지원하는 몇가지 함수들을 알아보자.

 

for_each(first, last, fn)

  • 범위 내(first,last) 원소들을 순차적으로 함수 fn을 실행한다. 
  • 원소를 수정하지 않는다.
#include <algorithm>  
#include <iostream>   
#include <vector>    

void functionA(int n)
{
	cout << ' ' << n;
}

int main()
{
	vector<int> myvector;
	myvector.push_back(10);
  	myvector.push_back(20);
  	myvector.push_back(30);
    
    for_each(myvector.begin(), myvector.end(), functionA);
    
}


//출력 결과 : 10 20 30

 

find(first, last, search)

  • (first, last) 사이의 search를 선형 검색을 한다.
  • last는 검색 대상이 아니다.(itr.end()에 해당하는 마지막요소의 다음 요소)
  • 검색 실패시 last를 반환한다.
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
	vector<int> container;
    
    for(int i=0; i < 10; ++i)
    	container.push_back(i);
        
	auto iter = find(container.begin(),container.end(),2);
    
    if(iter == container.end())
    	cout << "검색 실패" << endl;
}

 

sort

  • first와 last는 임의 접근 반복자(RandomIterator)이다.
  • operator<를 이용한 비교 : sort(first, last)
  • 함수를 이용한 비교 : sort(first, last, fn)
#include <iostream>
#include <algorithm>

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

int main(void)
{
	int arr[10] = {3,5,8,7,4,9,6,1,0,2};
    	sort(arr, arr + 10);		//0 1 2 3 4 5 6 7 8 9
    	sort(arr, arr + 10, compare);	//9 8 7 6 5 4 3 2 1 0
}

 

reverse(first, last)

  • 범위 내(first, last)의 원소들의 순서를 거꾸로 뒤집는다.
string str = "asdfevb"
reverse(str.begin()+2, str.end());	//asbvefd

 

반응형

'C++' 카테고리의 다른 글

[c++] STL vector  (0) 2021.08.19
[c++] STL Iterator의 종류  (0) 2021.08.18
[c++] STL Container의 종류  (0) 2021.08.18
[c++] STL 이란?  (0) 2021.08.18
[c++] 스택(Stack)과 힙(Heap)  (0) 2021.08.16