0、1、2、3、4 などの一連の数値を作成したいのですが、次のコードはコンパイルに失敗します。
std::set<int> s;
std::iota(s.begin(), s.end(), 0);
次のエラー メッセージが表示されます。
error C3892: '_First' : you cannot assign to a variable that is const
コンパイラは VC++2012 です。ベクトルに対しても同じコードが正常に機能します。セットでの使い方は?
アップデート
セットサイズが指定されていないため、コードが無意味であることがわかりました。
ここに私の問題の詳細があります。
[0, N] 範囲のいくつかの数値を含むセットがあります。私のアプリケーションでは、そのようなセットのセット差を何度も計算する必要があります。N は固定です。
としましょう。N = 5
最初のセットはs1 = {0, 3, 4}
です。set difference を計算する必要があります{0, 1, 2, 3, 4} \ {0, 3, 4} == {1, 2}
。この操作は、さまざまなセットに対して頻繁に実行する必要があるため、すべての数値 ({0, 1, 2, 3, 4}
この場合) を使用してセットを作成し、std::set_difference
それらの差を計算するために使用できると考えました。