我想創建一組數字範圍:0,1,2,3,4 ... 以下代碼無法編譯:不能使用std :: iota和std :: set
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。相同的代碼適用於矢量。我應該如何使用它?
UPDATE
我現在可以看到我的代碼是沒有意義的,因爲有沒有指定集合的大小。
下面是關於我的問題的一些更多細節。
我有一套包含[0,N]範圍內的一些數字。在我的應用程序中,我需要多次計算這些集合的集合差異。 N是固定的。
比方說N = 5
和第一組是s1 = {0, 3, 4}
。我需要計算集合差異{0, 1, 2, 3, 4} \ {0, 3, 4} == {1, 2}
。這個操作對於不同的集合應該經常執行,所以我認爲我可以創建一個包含所有數字的集合(在這種情況下爲{0, 1, 2, 3, 4}
),並使用std::set_difference
來計算這些差異。
這將是一個空操作的一個'std :: vector'。你想解決什麼問題? – juanchopanza