STLで順列
C++で順列を得る方法をちょっとメモ。こんな感じで。
#include<vector>#include<list>#include<set>#include<string>#include<algorithm>#include<iostream>// コンテナの出力template<class Container>voiddispContainer(constContainer& c) { std::copy(c.begin(), c.end(), std::ostream_iterator<int>(std::cout," ")); std::cout << std::endl; }// 順列の出力template<class Container>voiddispPermutation() {// 配列からコンテナを生成して・・・intary[] = {1,2,3};constintSIZE =sizeof(ary)/sizeof(ary[0]); Container c(ary, &ary[SIZE]);// 順列を出力するdispContainer(c);while(std::next_permutation(c.begin(), c.end())) dispContainer(c); std::cout << std::endl; }intmain() { std::cout <<"std::vector<int>"<< std::endl; dispPermutation<std::vector<int> >(); std::cout <<"std::list<int>"<< std::endl; dispPermutation<std::list<int> >(); std::cout <<"std::set<int>"<< std::endl; dispPermutation<std::set<int> >(); std::cout <<"std::string"<< std::endl; dispPermutation<std::string>(); }