07
30

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());
}

'C++ > 자료노트' 카테고리의 다른 글

<numeric>  (1) 2023.10.31
기타 유용한 함수 등등  (0) 2023.08.08
<vector>  (0) 2023.07.30
<string>  (0) 2023.07.30
COMMENT