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

replace,partition,transform,sort,lower_bound

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

replace

#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()
{
	const char *str="Notebook Computer";
	vector<char> vc(&str[0],&str[strlen(str)]);
	
	dump("원본",vc);
	replace(vc.begin(),vc.end(),'o','a');
	dump("replace",vc);
	rotate(vc.begin(),vc.begin()+2,vc.end());
	dump("rotate",vc);
	reverse(vc.begin(),vc.end());
	dump("reverse",vc);
}

partition

반응형
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
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 ari[]={3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8};
	vector<int> vi(&ari[0],&ari[sizeof(ari)/sizeof(ari[0])]);

	dump("원본",vi);
	partition(vi.begin(),vi.end(),bind2nd(greater<int>(),5));
	dump("partition",vi);

	vector<int> ar2(&ari[0],&ari[sizeof(ari)/sizeof(ari[0])]);
	stable_partition(ar2.begin(),ar2.end(),bind2nd(greater<int>(),5));
	dump("stable",ar2);
}

transform

#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; }

int multi2(int a)
{
	return a*2;
}

int add(int a, int b)
{
	return a+b;
}

void main()
{
	vector<int> src(5), dest(5), sum;
	int i;

	for (i=0;i<5;i++) src[i]=i;
	transform(src.begin(),src.end(),dest.begin(),multi2);
	dump("src",src);
	dump("dest",dest);
	transform(src.begin(),src.end(),dest.begin(),back_inserter(sum),add);
	dump("sum",sum);
}

sort

#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 ari[]={49,26,19,77,34,52,84,34,92,69};

	vector<int> vi(&ari[0],&ari[10]);
	dump("원본",vi);

	sort(vi.begin(),vi.end());
	dump("sort",vi);	
	vector<int> vi2(&ari[0],&ari[10]);
	stable_sort(vi2.begin(),vi2.end());
	dump("stable_sort",vi2);
	
	vector<int> vi3(&ari[0],&ari[10]);
	partial_sort(vi3.begin(),vi3.begin()+5,vi3.end());
	dump("partial_sort",vi3);

	vector<int> vi4(&ari[0],&ari[10]);
	nth_element(vi4.begin(),vi4.begin()+5,vi4.end());
	dump("nth_element",vi4);
}

lower_bound

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 ari[]={49,26,19,77,34,52,84,34,92,69};
	vector<int> vi(&ari[0],&ari[10]);
	vector<int>::iterator it;

	dump("원본",vi);
	sort(vi.begin(),vi.end());
	it=lower_bound(vi.begin(),vi.end(),50);
	if (*it == 50) {
		cout << "찾는 값이 존재합니다." << endl;
	} else {
		vi.insert(it,50);
		dump("삽입 후",vi);
	}
}
728x90
반응형

'프로그래밍 기록 > stl' 카테고리의 다른 글

next_permutation,inner_product,lexicographical,make_heap  (0) 2023.12.09
merge,minmax,accumulate,adjacent_difference  (0) 2023.12.09
generate, remove, remove_copy, unique  (0) 2023.12.09
random_shuffle  (0) 2023.12.09
fill  (0) 2023.12.09

댓글