프로그래밍 기록/stl
next_permutation,inner_product,lexicographical,make_heap
hominic
2023. 12. 9. 09:19
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
#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
반응형