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

next_permutation,inner_product,lexicographical,make_heap

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

next_permutation

#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> vi;
	vi.push_back(1);vi.push_back(2);vi.push_back(3);
	dump("원본",vi);
	for (i=0;i<6;i++) {
		next_permutation(vi.begin(),vi.end());
		dump ("다음",vi);
	}
}

inner_product

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

void main()
{
	int inp;
	vector<int> vi1,vi2;
	vi1.push_back(2);vi1.push_back(3);vi1.push_back(4);
	vi2.push_back(5);vi2.push_back(6);vi2.push_back(7);
	inp=inner_product(vi1.begin(),vi1.end(),vi2.begin(),0);
	printf("내적 = %d\n",inp);
}

lexicographical

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

void main()
{
	vector<int> vi1,vi2;
	for (int i=8;i<16;i++) {
		vi1.push_back(i);
		vi2.push_back(i);
	}
	//vi1[5]=0;
	if (lexicographical_compare(vi1.begin(),vi1.end(),vi2.begin(),vi2.end())) {
		cout << "vi1이 더 작다" << endl;
	} else {
		cout << "vi1이 더 작지 않다" << endl;
	}
}

make_heap

728x90
#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 ar[]={5,3,2,9,6};
	vector<int> vi(&ar[0],&ar[5]);
	dump("원본",vi);
	make_heap(vi.begin(),vi.end());
	dump("make_heap",vi);
	vi.push_back(10);
	push_heap(vi.begin(),vi.end());
	dump("push_heap",vi);
	pop_heap(vi.begin(),vi.end());
	dump("pop_heap",vi);
	vi.pop_back();
	sort_heap(vi.begin(),vi.end());
	dump("sort_heap",vi);
}
728x90
반응형

댓글