vectorとsetを相互に変換


このエントリーをはてなブックマークに追加

STLvectorと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,