#include <algorithm>
#include <iostream>
#include <set>
#include <vector>
int main()
{
std::set<int> someSet1;
std::set<int> someSet2;
someSet1.insert(50);
someSet1.insert(60);
someSet1.insert(10);
someSet1.insert(20);
someSet1.insert(30);
someSet2.insert(50);
someSet2.insert(10);
someSet2.insert(30);
// 本来はvectorではなく、std::set<int>を利用したい。
std::vector<int> diffSet;
std::set_difference(someSet1.begin(), someSet1.end(), someSet2.begin(), someSet2.end(), back_inserter(diffSet));
}
集合someSet1とsomeSet2の差分を抽出するために、set_differnce()関数を利用します。
このとき、差分結果をstd::set<int>に入れるためには、set_differnce()の引数にどのような形式で渡せばよろしいのでしょうか?
コメント

- 2:ゲスト (のっち)
- 2008/11/12 10:01
早速のご回答ありがとうございます。
inserterを利用して、うまくいきました。
inserter周りを整理すると、以下のようになるのですね。
呼ぶメンバ
イテレータークラス 生成用関数
push_back()std::back_insert_iterator std::back_inserter()
push_front()std::front_insert_iterator std::front_inserter()
insert()std::insert_iterator std::inserter()
それでは、失礼いたします。

- 3:ゲスト (BLUEPIXY)
- 2008/11/12 19:58
>2
そうですね、
set
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。






あまり詳しくないのですが、 diffSet.end())
wk で受けて、insert(wk.begin(), wk.end())
back_inserter(diffSet)でなく
inserter(diffSet,
ではどうでしょうか。
これでダメなようなら
vector<int>
すればいいかと思います。