본문 바로가기
프로그래밍 기록/stl

merge,minmax,accumulate,adjacent_difference

by hominic 2023. 12. 9.
728x90
반응형

merge

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";
	copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

void main()
{
	int i;
	vector<int> vi1,vi2,vi3;
	for (i=1;i<5;i++) vi1.push_back(i);
	for (i=3;i<9;i++) vi2.push_back(i);
	merge(vi1.begin(),vi1.end(),vi2.begin(),vi2.end(),back_inserter(vi3));
	dump("merge",vi3);

	vector<int> vi4;
	for (i=1;i<5;i++) vi4.push_back(i);
	for (i=3;i<9;i++) vi4.push_back(i);
	inplace_merge(vi4.begin(),vi4.begin()+4,vi4.end());
	dump("inplace_merge",vi4);
}

minmax

반응형
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void main()
{
	int i=3,j=5;
	printf("둘 중 작은 값은 %d이고 큰 값은 %d이다.\n",min(i,j),max(i,j));

	int ari[]={49,26,19,77,34,52,84,34,92,69};
	vector<int> vi(&ari[0],&ari[10]);
	printf("벡터에서 가장 작은 값은 %d이고 가장 큰 값은 %d이다.\n",
		*min_element(vi.begin(),vi.end()),*max_element(vi.begin(),vi.end()));
}

accumulate

#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";
	copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

void main()
{
	int ar1[]={49,26,19,77,34,52,84,34,92,69};
	vector<int> vi1(&ar1[0],&ar1[10]);
	printf("벡터의 총합은 %d이다.\n",accumulate(vi1.begin(),vi1.end(),0));

	int ar2[]={1,2,3,4,5,6,7,8,9,10};
	vector<int> vi2(&ar2[0],&ar2[10]);
	vector<int> vi3;
	partial_sum(vi2.begin(),vi2.end(),back_inserter(vi3));
	dump("부분합",vi3);
}

adjacent_difference

728x90
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;

template<typename C> void dump(const char *desc, C c) { cout.width(12);cout << left << desc << "==> ";
	copy(c.begin(),c.end(),ostream_iterator<typename C::value_type>(cout," ")); cout << endl; }

void main()
{
	int ar[]={1,2,5,10,15,12,20};
	vector<int> vi(&ar[0],&ar[7]);
	vector<int> vi2;
	adjacent_difference(vi.begin(),vi.end(),back_inserter(vi2));
	dump ("부분차 ",vi2);
}
728x90
반응형

댓글