gpt4 book ai didi

c++ - 打印 unordered_set 的元素

转载 作者:行者123 更新时间:2023-11-30 01:49:13 41 4
gpt4 key购买 nike

所以我正在编写一个小代码来删除字符串中的重复字符。我已经使用 map、vector 完成了它,但想使用 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 中没有 operator--(),因为它有前向迭代器。

谢谢!

最佳答案

你不能。

无序集没有任何固有的顺序。

这就是它被称为无序集的原因。

一个 vector(或者,更好的是,一个 deque)将是这里合适的输出容器,但是你可以使用一个额外的,临时设置,以在迭代时跟踪重复项。

关于c++ - 打印 unordered_set 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424014/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com