【发布时间】:2018-03-12 16:53:59
【问题描述】:
在将此标记为重复之前,我一直是here、here 和here, a duplicate of the first。
我知道boost::multi_index,并使用我缺少它的环境,并且std::unordered_set 不一定以确定性插入顺序存储元素。
我发现使用两个容器的概念,说一个额外的std::vector 不礼貌。
我喜欢是一个涉及比较器的解决方案,我可以在std::set 的模板参数中使用它(澄清一下,这可能是一个简单的函子结构,包含bool operator()() 重载、常规函数或 lambda)。有可能吗?
附录
-
必须通过 std:: 容器的开始迭代器/结束迭代器构造函数进行初始化,例如在这个 sn-p 中。
std::string str; cin >> str; std::set<char>(str.begin(), str.end()); 另外,另一个有趣的用例是创建一个哑哈希包装函子,允许将插入顺序推入
std::unordered_set的模板参数。
【问题讨论】:
-
你有什么问题? (让您的问题自包含,您可以通过问号的存在来判断某事是否是问题。其他一切都是咆哮或推文。)
-
有可能吗?我承认我最终听起来像那样,所以我想澄清一下。任何帮助表示赞赏。 :)
-
因为它很麻烦,而且可能 lambda 可以在这里工作。我很懒,仅此而已:P AFAIK
std::set也允许这样做,所以如果我可以配置它的行为,为什么不使用我喜欢的容器呢? -
否 - 标题用于索引问题列表中的帖子。您的问题主体需要单独独立。 在你的问题中说出你要问的问题,不要指望人们会四处寻找你的问题。
-
@mushi:不不,您仍然在插入时扫描重复项,但扫描必须是线性搜索(因为范围未排序)。没有重复。