とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

std::merge, std::inplace_merge

STL―標準テンプレートライブラリによるC++プログラミング 第2版

// P111 ex05-25.cpp
#include<iostream>
#include<vector>
#include<algorithm>
#include<cassert>
int main(){
 using std::cout;
 using std::endl;
 using std::vector;
 using std::merge;
 using std::inplace_merge;
 cout << "Illustrating the generic merage algorithms." << endl;
 const int N = 5;
 vector<int> v1(N), v2(N), v3(N + N);
 for(int i = 0; i < N; ++i){
  v1[i] = i * 2;
  v2[i] = i * 2 + 1;
 }

 merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
 for(int i = 0; i < N + N; ++i)
  assert(v3[i] == i);

 std::copy(v1.begin(), v1.end(), v3.begin());
 std::copy(v2.begin(), v2.end(), v3.begin() + N);
 inplace_merge(v3.begin(), v3.begin() + N, v3.end());
 for(int i = 0; i < N + N; ++i)
  assert(v3[i] == i);
 cout << " --- Ok." << endl;
}