1. reverse(first, last)
first 부터 last 전 까지의 원소들의 순서를 역순으로 뒤집는다.
//{1,2,3,4} -> {4,3,2,1}
vector<int> solution(vector<int> num_list) {
reverse(begin(num_list), end(num_list));
return num_list;
}
2. count(first, last, val)
first 부터 last 전 까지의 원소들 중 val 과 일치하는 원소들의 개수를 반환한다.
//{1,1,2,3,4,1} -> 3 반환
int solution(vector<int> array, int n) {
return count(begin(array), end(array), n);
}
3. sort(first,last)
first 부터 last 전 까지의 원소들을 오름차순으로 정렬한다.
//{1,3,4,2,5} -> {1,2,3,4,5}
int solution(vector<int> sides) {
sort(sides.begin(),sides.end());
return sides;
}
//rbegin(), rend()를 사용해 역순으로 정렬할 수 있다
//{1,3,4,2,5} -> {5,4,3,2,1}
int solution(vector<int> sides) {
sort(sides.rbegin(),sides.rend());
return sides;
}
//greater<int>(), less<int>()를 사용해 정렬 조건을 설정할 수 있다
int solution(vector<int> sides) {
sort(sides.begin(),sides.end(),less<int>()); //오름차순
sort(sides.begin(),sides.end(),greater<int>()); //내림차순
return sides;
}
4. find(first,last,val)
first 부터 last 전 까지의 원소들 중 val과 일치하는 원소들 중 첫 번째 원소의 iter을 반환한다.
탐색에 실패했다면 last를 반환한다.
//{1,2,3,4,5}, 3 -> 3의 iter 리턴
int solution(vector<string> s1) {
find(s2.begin(), s2.end(), 3);
return answer;
}
5. remove(first,last,val)
first 부터 last 전까지의 원소들 중 val과 일치하는 원소를 발견하면 그 다음 요소부터 마지막 요소까지 모두 한 칸 앞으로 당겨오고, 이 이동의 끝점이자 남은 요소의 시작점의 iter를 반환한다.
//{BCBdbe}, B -> {Cdbebe} 두번째 b의 iter 반환
string solution(string my_string, string letter) {
remove(my_string.begin(),my_string.end(),letter[0]);
return my_string;
}
//{BCBdbe}, B -> {Cdbe}
//값을 완전히 제거하려면 .erase와 함께 사용하는 것이 좋다
string solution(string my_string, string letter) {
my_string.erase(remove(my_string.begin(),my_string.end(),letter[0]),my_string.end());
return my_string;
}
6. transform(first, last, d_first, unary_op)
first 부터 last 전까지의 원소들을 unary_op 함수에 인자로 전달한 후 그 결과값을 d_first 부터 연속되게 기록한다. (원소들을 특정 규칙에 맞춰 변환시킬 때 사용하면 좋은 듯)
//입력받은 string을 전부 대문자로 바꾸는 함수
//toupper에 ::가 붙은 이유는 기타 유용한 함수 게시글 참조
string solution(string myString) {
transform(myString.begin(), myString.end(),myString.begin(), ::toupper);
return myString;
}
7. rotate(first,middle,last)
first부터 last 전까지의 원소들을 middle을 첫 원소로 할 때까지 회전시킨다
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//{1,2,3,4,5} -> {2,3,4,5,1}
vector<int> solution(vector<int> numbers) {
rotate(numbers.begin(),numbers.begin()+1,numbers.end());
return numbers;
}
8. min_element(first, last)
first부터 last 전까지의 원소들 중 최소값의 iter를 반환한다. (최대값은 max_element)
#include <vector>
#include <algorithm>
using namespace std;
//{1,2,3,4,5} -> 1 iter 반환
int solution(vector<int> numbers) {
reuturn *min_element(numbers.begin(),numbers.end());
}