错误:没有匹配的构造函数来初始化"set<int>"
error: no matching constructor for initialization of 'set<int>'
在C++中,我包含了set
库:
#include <set>
我想创建一个包含与另一个集合相同的元素数量的集合。所以,我试了这个:
set<int> ret((int)ring.size());
但是,我收到此错误:
error: no matching constructor for initialization of 'set<int>'
知道如何从其声明中指定集合的大小吗?
知道如何从其声明中指定集合的大小吗?
你没有。
您可以将旧集复制到新集,从而填充该集,从而相应地增加其大小,或者向其插入唯一值,直到达到所需的大小。
您始终可以检查 ref 中可用的构造函数。
考虑一下:假设存在类似于您描述的构造函数。它必须默认初始化集合的值。但这意味着所有值都是相同的。这应该会产生大小为 1 的集合。
这并不完全合乎逻辑。您不会像为其他容器类型那样为set
中的元素保留存储空间,例如 vector
.此外,set
中的所有元素必须是不同的,因此不能将元素设置为相同的值。
set
中元素的数量完全由集合中的元素驱动。如果你想要一个与另一个集合具有相同数量元素的集合,那么你也可以使用复制构造函数。
std::set
旨在 存储独特的元素。
如果那样的话:
set<int> ret((int)ring.size());
有可能隐式假设您要创建一个存储非唯一元素的容器。因此这是不可能的(这就是std::multiset
的用途(。
相关文章:
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- EASTL矢量<向量<int>>连续的
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- 是std :: set&lt; std :: future&gt;不可能存在
- std::map<std::set, double> AND std:<long>map< std::p air<long, long>, double>