當我在此代碼中調用unique()時,輸出最終會添加最後一個元素的副本。unique()似乎要添加最後一個元素的另一個副本
vector<vector<int>> ints;
for(int i(0); i<files; i++)
{
stringstream stream(list[i]);
int num(0);
vector<int> aList;
for(int j(0); j<list[i].length(); j++)
{
if(stream.peek() == ' ')
stream.ignore();
while (stream >> num)
{
aList.push_back(num);
if(stream.peek() == ' ')
stream.ignore();
}
}
ints.push_back(aList);
unique(ints[i].begin(), ints[i].end());
}
我有一個字符串(這實際上是整數的列表)的矢量稱爲list
正在解析成整數,並存儲在多維向量。 unique()意味着從創建的整數向量中去除重複項。
無論如何,我的問題是這樣的:我怎樣才能得到獨特的()來停止附加元素?
它沒有在最後加上它們; *您不*除去重複,'std :: unique' *交換*在其算法期間結束。 'ints [i] .erase(std :: unique(ints [i] .begin(),ints [i] .end()),ints [i] .end);'。注意,你的流提取是格式化的,所以沒有理由啜泣周圍的空白。 – WhozCraig
你應該看看它是如何工作的,因爲你沒有以正確的方式使用它:http://en.cppreference.com/w/cpp/algorithm/unique – Jack
現在,我看着它,你可能會發現[像這樣的東西](http://pastebin.com/YKVbECLU)更簡單一點。 – WhozCraig