stdset相关内容

C++,复制集到向量

我需要将 std::set 复制到 std::vector: std::set 输入;输入.插入(5);输入.插入(6);std::vector 输出;std::copy(input.begin(), input.end(), output.begin());//错误:向量迭代器不可解引用 问题出在哪里? 解决方案 你需要使用一个back_inserte ..
发布时间:2022-01-20 17:58:57 C/C++开发

如何从集合中删除所有偶数<int>在 C++ 中

我是 C++ 新手.我想知道有经验的编码员是如何做到这一点的. 我有什么: set小号;s.插入(1);s.插入(2);s.插入(3);s.插入(4);s.插入(5);for(set::iterator itr = s.begin(); itr != s.end(); ++itr){如果 (!(*itr % 2))s.erase(itr);} 当然,它不起作用.因为它在擦除后递增.这是否 ..
发布时间:2022-01-17 18:52:11 C/C++开发

c++ STL设置差异

C++ STL 集合数据结构有集合差分算子吗? 解决方案 有,在中调用:std::set_difference.用法是: #include #include #include //...std::sets1,s2;//用值填充 s1 和 s2std::set结果;std::set_difference(s1.begin(), s ..
发布时间:2022-01-17 18:36:46 C/C++开发

如何在使用算法保持原始排序的同时从未排序的 std::vector 中删除重复项?

我有一个整数数组,我需要从中删除重复项,同时保持每个整数第一次出现的顺序.我可以看到这样做,但想象有更好的方法可以更好地利用 STL 算法?插入超出了我的控制范围,因此我无法在插入之前检查重复项. int unsortedRemoveDuplicates(std::vector &numbers) {std::set唯一号码;std::vector::iterator all ..
发布时间:2022-01-10 13:06:05 C/C++开发

如何有效地将一系列连续整数插入 std::set?

在 C++ 中,我有一个 std::set,我想插入一系列连续整数.我怎样才能有效地做到这一点,希望在 O(n) 时间内,其中 n 是范围的长度? 我想我会使用 std::insert 的 inputIterator 版本,但不清楚如何构建输入迭代器. std::set我的集;//插入 [34 - 75):mySet.insert(inputIteratorTo34, inputItera ..
发布时间:2022-01-09 13:01:40 C/C++开发

C++ std::set 线程安全吗?

我有一个关于 std::set 线程安全的问题. 据我所知,我可以迭代一个集合并添加/删除成员,这不会使迭代器失效. 但请考虑以下场景: 线程'A'遍历一组shared_ptr 线程“B"偶尔会向该集合中添加项目. 我在程序运行时遇到了段错误,但我不确定为什么会发生这种情况.缺乏线程安全是原因吗? 解决方案 STL 没有内置线程支持,所以你必须扩展 STL使用您自 ..
发布时间:2022-01-07 11:09:09 C/C++开发

C2676:二进制“<":“const _Ty"未定义此运算符或转换为预定义运算符可接受的类型

对于下面的代码,我不断收到此错误. 在阅读this后,我相信我的错误是成为 for 循环中的 it++,我尝试将其替换为 next(it, 1) 但它没有解决我的问题. 我的问题是,迭代器是给我带来问题的那个吗? #include #include #include #include 使用命名空间标准;结构节点{字符顶点;设置邻近的;};类图{上市:图(){};〜图(){};void ..
发布时间:2021-12-24 14:43:13 C/C++开发

如何计算 C++ std::map 中不同值的数量

我有一个 C++ 映射声明如下 std::map字图= {{ "是", 6 },{“的",5},{ "帽子", 9 },{ “在6点钟 }}; 我想知道如何找到 wordMap 中存在的 int 不同值的数量.在此示例中,我希望输出为 3,因为我有 3 个不同的不同值 (6,5,9). 解决方案 尝试使用 std::set 进行计数: std::set英石;for (const au ..
发布时间:2021-08-30 18:58:35 C/C++开发

set::insert 是否保存副本或指针 C++

函数 set::insert 是否保存指向元素的指针或元素的副本.意思是,我可以做下面的代码,还是必须确保指针没有被删除? int *a;*a=new int(1);设置_放;_set.insert (*a);删除一个;*a=new int(2);_set.insert (*a);删除一个; 我用 int 举例,但我的真实程序使用我创建的类. 解决方案 所有 STL 容器都存储插入数据 ..
发布时间:2021-07-23 19:16:17 C/C++开发

C2676:二进制'<':'const _Ty'没有定义此运算符或未转换为预定义运算符可接受的类型

对于以下代码,我一直收到此错误. 阅读此后,我认为我的错误是我的for循环中的it++,我尝试将其替换为next(it, 1),但是并不能解决我的问题. 我的问题是,迭代器是给我这个问题的迭代器吗? #include #include #include #include using namespace std; ..
发布时间:2021-02-09 19:33:49 C/C++开发

套装超载算子

我正在使用std :: set来实现特定的算法.该集合中有重复项,因此我认为我必须重载运算符.重载看起来像这样. class Vec3f { ... bool operator () ( const Vector3f& v0, const Vector3f& v1 ) const { float epsilon = 1e-7; return ((v1[0] ..
发布时间:2020-07-10 01:17:15 C/C++开发

std :: set未检测到重复的自定义对象

我有一张地图,用于保留球队名称和球队std:pair >球员,以及一组指向球员的指针,以使球员按获胜顺序降序排列.而且有一个陷阱-一名球员可以参加多个团队. class Player { public: int wins; std::string name; Player() {} ..
发布时间:2020-07-10 01:17:12 C/C++开发

std :: set 2D点的自定义比较器

我需要一个非重复2D点的列表,因此我使用具有自定义比较功能的std::set.我使用的函数在插入点后出现问题,因为有时std::find找不到已插入的点. const double tolerance = 0.1; struct MyPoint2D { MyPoint2D(double x, double y) : _x(x), _y(y) {} double _x, _y; }; ..
发布时间:2020-07-10 01:16:09 C/C++开发

std :: set与矢量或地图的优势

这可能是一个愚蠢的问题,我对C ++和一般编程还是很陌生. 我想了解几个STL容器的使用,并牢记这一点,我想知道使用std :: set与使用矢量或地图相比有什么优势? 我似乎找不到这个问题的明确答案.我注意到集合使用地图,但是为什么不总是使用地图或总是使用集合呢?而是提供了2个非常相似的容器. 预先感谢. 解决方案 std::set和std::map都是关联容器.区别在于std::set ..
发布时间:2020-07-10 01:15:05 C/C++开发

为什么std :: set没有“包含"?成员函数?

我正在大量使用std::set,通常我只需要检查这样的集合是否包含数字. 我觉得很自然地写: if (myset.contains(number)) ... 但是由于缺少contains成员,我需要编写繁琐的代码: if (myset.find(number) != myset.end()) .. 或不那么明显: if (myset.count( ..
发布时间:2020-07-10 01:14:01 C/C++开发

如何在C ++中执行集合向量?

我可以做一个简单的集合数组: set * words = new set [10] 我怎样做向量集? 这导致编译器错误: vector > v. 谢谢您的回答! 解决方案 如果vector > v正是您所拥有的(我希望您剪切并粘贴),则您遇到了一个令人讨厌的小功能之一C ++. 那些>>在您看来就 ..
发布时间:2020-07-10 01:13:57 C/C++开发