簡體   English   中英

打印unordered_set的元素

[英]Printing the elements of an unordered_set

因此,我正在編寫一個小的代碼,以從字符串中刪除重復的字符。 我已經使用地圖,矢量完成了此操作,但想使用unordered_set。

#include <iostream>
#include <unordered_set>
#include <string.h>

using namespace std;

int main() {
    char* str = "abbcdeffg";
    std::unordered_set<char> ump;

    for(int i = 0; i < strlen(str) ; i++)
    {
        ump.insert(str[i]);
    }

    for (auto it = ump.begin(); it != ump.end(); ++it)
    {
        cout << *it;
    }
    return 0;
}

但是,這些元素以相反的順序打印。 輸出是gfedcba。 請有人可以解釋為什么嗎?

而按原始順序打印元素的最佳方法是什么。 在unordered_set中沒有運算符-(),因為它具有向前的迭代器。

謝謝!

你不能。

無序集沒有任何固有的排序。

這就是為什么它被稱為無序集合的原因。

一個vector (或者更好的是一個deque )在這里是合適的輸出容器,但是您可以在迭代過程中使用一個額外的, 臨時的 set來跟蹤重復項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM