CPP/c++실전사용법

배열 활용 함수(C++)(알고리즘)

뜨거운 개발자 2022. 12. 29. 09:09

위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다.

알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다.

강의링크

rotate()

시계 방향과 반시계 방향으로 회전하는 로직을 짤 때 쓰는 함수.

#include<bits/stdc++.h> 
using namespace std; 
vector<int> v; 
int main(){ 	
	for (int i=1; i<10; ++i) v.push_back(i); // 1 2 3 4 5 6 7 8 9  	//
    
    rotate(v.begin(),v.begin()+1, v.end()); 	// 2 3 4 5 6 7 8 9 1 앞으로 할 땐 이렇게 	
    rotate(v.begin(),v.begin() + v.size() - 1, v.end()); 	 // 9 1 2 3 4 5 6 7 8 뒤로 갈 땐 이렇게 	
    for (std::vector<int>::iterator it=v.begin(); it!=v.end(); ++it)  std::cout << ' ' << *it; \
    std::cout << '\n'; 
}

여기서 rotate 함수에 들어가는 인자는 모두 이터레이터이며 first, middle, last라고 부릅니다. first와 last 사이에 있는 부분배열에서 middle이 가리키는 요소가 first로 가며 회전하는 것을 의미합니다. 예를 들어 v.begin()에서 v.end()는 배열 전체를 가리키며 여기서 v.begin() + 1이 v.begin()으로 밀려 간다는 것을 의미하니 앞으로 한칸 회전이 되겠죠?

 

accumulate()

배열의 합을 쉽고 빠르게 구해주는 함수로는 accumulate가 있습니다

#include <bits/stdc++.h> 
using namespace std; 
int main()
{ 	
	vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 	
    int sum = accumulate(v.begin(), v.end(), 0); 	
    cout << sum << '\n'; // 55 
}

max_element()

배열 중 가장 큰 요소를 추출하는 함수, max_element입니다.

#include <bits/stdc++.h> 
using namespace std; 
int main(){ 	
	vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 	
    int a = *max_element(v.begin(), v.end()); 	
    cout << a << '\n'; // 10 
}

가장 작은 요소는 min_element라는 함수를 사용하면 됩니다


Uploaded by

N2T
728x90