STLのvectorとsetは、コンストラクタを使うと互いに簡単に変換することができる。
#include <iostream> #include <vector> #include <set> using namespace std; void printVector(vector<int> &vec){ cout << "size = " << vec.size() << endl; for(int i = 0; i < vec.size(); ++i){ cout << vec[i] << ", "; } cout << endl << endl; } void printSet(set<int> &s){ cout << "size = " << s.size() << endl; for(set<int>::iterator it = s.begin(); it != s.end(); ++it){ cout << *it << ", "; } cout << endl << endl; } int main(void) { set<int> s; s.insert(30); s.insert(10); s.insert(70); s.insert(50); printSet(s); // set -> vector vector<int> vec(s.begin(), s.end()); printVector(vec); // vector -> set set<int> s2(vec.begin(), vec.end()); printSet(s2); return 0; }
setコンテナの変数sをもとに、vectorコンテナの変数vecを生成。そして、vecをもとに、setコンテナの変数s2を作成した。
出力結果は以下の通り。
size = 4 10, 30, 50, 70, size = 4 10, 30, 50, 70, size = 4 10, 30, 50, 70,