问题标签 [stdset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
948 浏览

c++ - 比较两组 std::weak_ptr

weak_ptr我正在尝试使用 GCC 4.7.2比较两组 C++11 。下面的代码显示了重现错误的最小可能样本:

尝试编译上述结果会导致一长串错误,其中以下是第一个实际错误:

由于 的瞬态特性weak_ptr,是否无法比较整组它们?

更新:

一个建议是使用:

这导致:

0 投票
3 回答
272 浏览

c++ - 是否有 O(1) 方法来转换 std::map进入 std::set

我想对 std::map<> 实例的键进行一些设置交集操作,而无需事先将键复制到 std::set<> 中。

它没有记录在 API 中,但是有什么方法可以在 O(1) 时间内从 std::map<> 中提取密钥并将它们放入 std::set<> 中?

0 投票
2 回答
530 浏览

c++ - find_if in set in C++:未解析的重载函数类型

我之前在 C++ 中将 find_if 与列表和向量一起使用过,它运行良好。但是现在,当我尝试将它与集合一起使用时,我收到以下错误:

我的班级如下:

谁能帮我理解问题出在哪里?

0 投票
3 回答
4150 浏览

c++ - 如何优雅地将所有枚举放入 std::set

我有一个枚举,我想把它们都放在集合中(然后用 set_intersection 算法删除一些,但那是题外话)。一切都很好,除了我坚持第 1 步。:)

如果我有(真正的班级有更高基数的枚举)

我将如何初始化 astd::set<MyClass::Color> 以包含所有枚举。
我显然可以一个一个地手动插入它们,使用强制转换进行 for 循环,因为它们是连续的并且从 0 开始(如果我在枚举定义中不使用 =,我认为这是必需的),但我正在寻找一种更优雅的方式。

编辑:如果可能,我更喜欢 C++03 解决方案,因为当前的问题实例需要它,但如果不是,C++11 也很高兴知道。

0 投票
1 回答
625 浏览

c++ - std::map 插入而不创建临时值

我有一个存储、字符串和一组双打的地图,如下所示。

我需要一种为给定键插入价格的方法,并编写了以下代码。

我想知道,有没有办法特别改进第一部分,它创建了一个临时集。

0 投票
2 回答
89 浏览

c++ - 如何在 C++ 中创建具有非标准顺序的整数集?

在 C++03 中,我想创建一个 std::set 迭代时,一个整数首先出现,之后,我不在乎什么顺序,但我需要一个顺序来确保没有重复放。例如,如果我有一组年份,并且在迭代时我希望在所有其他年份之前处理 2010 年。

基本上,我需要提供一个比较器,在运行时已知的某个年份(例如 2010 年)与所有其他年份相比要少,但剩余年份是有序的,但没有任何必要的顺序,只是为了确保没有重复放。

0 投票
1 回答
2553 浏览

c++ - 为什么 std::remove 不适用于 std::set?

以下代码:

不使用 gcc 4.7.2 编译:

所以我去了定义,fset::iterator我在 gcc 的实现中找到了这个(文件../c++/4.7/bits/stl_set.h,来自 125):

为什么两个定义都是不变的?为什么我的(非常简单的)代码不起作用?

0 投票
5 回答
55430 浏览

c++ - std::set 与向量或映射的优势

这可能是一个愚蠢的问题,我对 C++ 和一般编程很陌生。我想了解几个 STL 容器的使用,考虑到这一点,我想知道使用 std::set 与例如使用向量或映射相比有什么优势?我似乎找不到这个问题的明确答案。我注意到集合使用地图,但为什么不总是使用地图或总是使用集合。相反,提供了 2 个非常相似的容器。提前致谢。

0 投票
4 回答
5690 浏览

c++ - C++ std::set 自定义比较器

好吧,我的问题是我正在使用带有自定义比较器的 std::set,例如:

所以,我像这样使用它

现在我的问题是我想这样做:

但是,当然,它除了 A* 而不是 short int。

所以,我知道我可以使用 std::find_if,但它不会使自定义比较器变得无用吗?它会迭代整个列表,不是吗?有什么方法可以将 find 与 hashCode 而不是对象本身一起使用?

谢谢!

0 投票
4 回答
6396 浏览

c++ - 如何在 C++ 中一般地迭代集合?

简而言之,如果我有一个集合和向量,我如何创建一个可以将两者都作为参数处理的通用方法。

我想做的就是遍历任何一种类型的集合。听起来应该是微不足道的,但我错过了一些东西。

在 C# 中,我会传递 IEnumerable 或类似的东西。然后我可以遍历集合。

任何解释答案的一般性阅读将不胜感激。