관리 메뉴

Kim's Programming

Algorithm - inplace_merge() 본문

STL - Algorithm/Algorithm - Merge

Algorithm - inplace_merge()

Programmer. 2017. 6. 24. 11:58

원형)


1
2
3
4
5
6
7
8
9
//기본형
template <class BidirectionalIterator>
  void inplace_merge (BidirectionalIterator first, BidirectionalIterator middle,
                      BidirectionalIterator last);
 
//사용자 정의형
template <class BidirectionalIterator, class Compare>
  void inplace_merge (BidirectionalIterator first, BidirectionalIterator middle,
                      BidirectionalIterator last, Compare comp);
cs



의미)


[Iterator first, Iterator midddle) 사이와 [Iterator middle, Iterator last) 사이의 연속된 2개의 오름차순 정렬된 범위에 대해서 Iterator result를가 가리키는위치 부터  [Iterator first, Iterator last)의 모든 데이터를 병합하여 정렬하여 삽입니다.



소스)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
#include<algorithm>
#include<vector>
 
void Print(const std::vector<int>& target)
{
    for (std::vector<int>::const_iterator iterPos = target.cbegin(); iterPos != target.cend(); iterPos++)
        std::cout << *iterPos << " ";
    std::cout << std::endl;
}
 
void main()
{
    std::vector<int> vector = { 10,5,20,15,30 };
    std::vector<int> vector2 = { 1,3,5,7,9,11 };
    std::vector<int> vectorMerge(11);
    std::vector<int>::iterator iter;
 
    std::sort(vector.begin(), vector.end());
    std::sort(vector2.begin(), vector2.end());
    Print(vector);
    Print(vector2);
 
    iter = std::copy(vector.begin(), vector.end(), vectorMerge.begin());
    Print(vectorMerge);
    std::copy(vector2.begin(), vector2.end(), iter);
    Print(vectorMerge);
 
    std::inplace_merge(vectorMerge.begin(), vectorMerge.begin() + 5, vectorMerge.end());
    Print(vectorMerge);
}
 
cs



리턴값)


없음



결과)




'STL - Algorithm > Algorithm - Merge' 카테고리의 다른 글

Algorithm - set_difference()  (0) 2017.06.24
Algorithm - set_intersection()  (0) 2017.06.24
Algorithm - set_union()  (0) 2017.06.24
Algorithm - includes()  (0) 2017.06.24
Algorithm - merge()  (0) 2017.06.24