次のコードは、空集合{}で2つの要素集合{2,3}の和集合を形成しようとしています。結果として得られるコンテナ(この場合はリスト)のサイズは2でなければなりません。2つの集合の和集合を作ることは、間違った一貫性のない回答を与えるようです。
しかし、コードを実行すると、2つのうちのどちらに依存するかによって、ユニオンのサイズは0または3になります変数united
の宣言のために示された場所。これらの結果のどちらも、私が期待したものではなく、明らかに正しいものではありません。
私はここで何が欠けていますか?
#include <list>
#include <set>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
//list<int> united; // resulting output is 3
int d1[] = {2,3};
set<int> dom1(d1, d1+2);
set<int> dom2;
list<int> united; // resulting output is 0
set_union(dom1.begin(), dom1.end(), dom2.begin(), dom2.end(), united.begin());
cout << united.size();
return 0;
}