출처 : https://learn.microsoft.com/ko-kr/cpp/standard-library/algorithm?view=msvc-170
#include<algorithm>
template<class RandomAccessIterator>
void sort(
RandomAccessIterator first,
RandomAccessIterator last);
template<class RandomAccessIterator, class Compare>
void sort(
RandomAccessIterator first,
RandomAccessIterator last,
Compare pred);
template<class ExecutionPolicy, class RandomAccessIterator>
void sort(
ExecutionPolicy&& exec,
RandomAccessIterator first,
RandomAccessIterator last);
template<class ExecutionPolicy, class RandomAccessIterator, class Compare>
void sort(
ExecutionPolicy&& exec,
RandomAccessIterator first,
RandomAccessIterator last,
Compare pred);
pred 는 두개의 인자를 받아서 두개의 인자가 순서대로 되어있는 경우 true 를 return
Example
bool cmp(int a , int b){
return a<b; // a<b일때 순서가 true => 오름차순
}
int main(){
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(2);
sort(v.begin(),v.end());
}
template<class InputIterator, class Type>
InputIterator find(
InputIterator first,
InputIterator last,
const Type& value);
int main(){
int a[5] = {0,1,2,3,4};
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
int* p =find(a,a+3,2);
vector<int>::iterator it = find(v.begin(),v.end(),3);
}
template<class OutputIterator, class Size, class Type>
OutputIterator fill_n(
OutputIterator first,
Size count,
const Type& value);
int main(){
vector<int> v(5);
for(vector<int>::iterator it=v.begin(); it<v.end(); it++){
cout<<*it<<'\n';
}
fill_n(v.begin(),5,5);
for(vector<int>::iterator it=v.begin(); it<v.end(); it++){
cout<<*it<<'\n';
}
}
template<class BidirectionalIterator>
bool next_permutation(
BidirectionalIterator first,
BidirectionalIterator last);
template<class BidirectionalIterator, class BinaryPredicate>
bool next_permutation(
BidirectionalIterator first,
BidirectionalIterator last,
BinaryPredicate pred);
template<class BidirectionalIterator>
bool prev_permutation(
BidirectionalIterator first,
BidirectionalIterator last);
template<class BidirectionalIterator, class BinaryPredicate>
bool prev_permutation(
BidirectionalIterator first,
BidirectionalIterator last,
BinaryPredicate pred);
-Example
int main(){
vector<int> v;
v.push_back(2);
v.push_back(3);
v.push_back(4);
do{
for(vector<int>::iterator it = v.begin(); it<v.end(); it++){
cout<<*it<<" ";
}
}while(next_permutation(v.begin(),v.end()));
do{
for(vector<int>::iterator it = v.begin(); it<v.end(); it++){
cout<<*it<<" ";
}
}while(prev_permutation(v.begin(),v.end()));
}
template<class BidirectionalIterator>
void reverse(
BidirectionalIterator first,
BidirectionalIterator last);
int main(){
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
reverse(v.begin(),v.end());
}
template<class ForwardIterator, class Type>
ForwardIterator upper_bound(
ForwardIterator first,
ForwardIterator last,
const Type& value);
template<class ForwardIterator, class Type, class Compare>
ForwardIterator upper_bound(
ForwardIterator first,
ForwardIterator last,
const Type& value,
Compare pred);
int main(){
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(7);
v.push_back(9);
vector<int>::iterator lit = lower_bound(v.begin(),v.end(),7);
vector<int>::iterator uit = upper_bound(v.begin(),v.end(),7);
cout<<*lit<<" "<<*uit;
}
template<class ForwardIterator, class Type>
bool binary_search(
ForwardIterator first,
ForwardIterator last,
const Type& value);
int main(){
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(7);
v.push_back(9);
binary_search(v.begin(),v.end(),5);
}