[C++プログラミングとSTL]アルゴリズム
これは本書C++プログラミングとSTLの第15部の要約です。
目次
1.アルゴリズムの概念
2.アルゴリズムの使用例
1.アルゴリズムの概念
したがって、アルゴリズム関数は、特定のコンテナのメンバー関数ではなく、通常のグローバル関数によって記述されるである.
2.アルゴリズム使用例
1. find
함수 원형
template<class InputIterator, class T>
InputIterator find
{
InputIterator first,
InputIterator last,
const T& value
}
사용 예제
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int arr[] = { 10, 20, 30, 40, 50 };
vector<int> vec1(&arr[0], &arr[5]);
if (find(vec1.begin(), vec1.end(), 30) != vec1.end())
{
cout << "검색 성공" << endl;
}
else
{
cout << "검색 실패" << endl;
}
}
2. copy
特定のコンテナの範囲値をターゲットコンテナにコピーする関数
함수 원형
template <class InputIterator, class OutputIterator>
OutputIterator copy
{
InputIterator first,
InputIterator last,
OutputIterator result;
}
사용 예제
#include <iostream>
#include <deque>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int arr[] = {30, 20, 50, 60, 80, 10, 70};
vector<int> vec1(&arr[0], &arr[7]);
deque<int> dq;
deque<int>::iterator it;
copy(vec1.begin(), vec1.end(), back_inserter(dq));
for (it = dq.begin(); it!= dq.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
3. sort
함수 원형
template <class RandomAccessIterator, class Compare>
void sort
{
RandomAccessIterator first,
RandomAccessIterator last
}
사용 예제
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
void main()
{
int arr[] = {30, 20, 50, 60, 80, 10, 70};
deque<int> dq;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
dq.push_back(arr[i]);
}
deque<int>::iterator it;
sort(dq.begin(), dq.end());
for (it = dq.begin(); it != dq.end(); it++)
{
cout << *it << endl;
}
}
4. reverse
함수 원형
template <class BidirectionalIterator>
void reverse
{
BidirectionalIterator first,
BidirectionalIterator last
}
사용 예제
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
int arr[] = {30, 20, 50, 60, 80, 10, 70};
vector<int> vec1(&arr[0], &arr[7]);
vector<int>::iterator it;
cout << "reverse 전 : ";
for (it = vec1.begin(); it != vec1.end(); it++)
cout << *it << " ";
cout << endl;
reverse(vec1.begin(), vec1.end());
cout << "reverse 후 : ";
for (it = vec1.begin(); it != vec1.end(); it++)
cout << *it << " ";
cout << endl;
}
5. random_shuffle
함수 원형
template <class RandomAccessIterator>
void random_shuffle
{
RandomAccessIterator first,
RandomAccessIterator last
}
사용 예제
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
void main()
{
int arr[] = {30, 20, 50, 60, 80, 10, 70};
deque<int> dq;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
dq.push_back(arr[i]);
}
deque<int>::iterator it;
for (it = dq.begin(); it != dq.end(); it++)
cout << *it << " ";
cout << endl;
random_shuffle(dq.begin(), dq.end());
for (it = dq.begin(); it != dq.end(); it++)
cout << *it << " ";
cout << endl;
}
Reference
この問題について([C++プログラミングとSTL]アルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@mokhwasomssi/C-프로그래밍과-STL-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol