在C ++中,我已经包含了set
库:
#include <set>
我想创建一个具有与另一个元素相同的元素的集合。所以,我试过这个:
set<int> ret((int)ring.size());
但是,我收到此错误:
error: no matching constructor for initialization of 'set<int>'
任何想法如何从声明中指定集合的大小?
答案 0 :(得分:5)
任何想法如何从声明中指定集合的大小?
你做不。
您要么将旧集合复制到新集合,从而填充集合,这会导致其大小相应增加,或者向其插入唯一值,直到达到所需大小
您始终可以查看ref中可用的构造函数。
想一想:假设你描述的构造函数存在。它必须默认初始化set的值。但这意味着所有价值都是一样的。这应该会产生一个大小为1的集合。
答案 1 :(得分:1)
这不完全符合逻辑。您不为set
中的元素保留存储空间,就像对其他容器类型一样,例如vector
。此外,set
中的所有元素必须是不同的,因此您无法将元素设置为相同的值。
set
中的元素数量仅由集合中的元素驱动。如果你想要一个具有与另一个元素相同数量的元素的集合,那么你也可以使用复制构造函数。
答案 2 :(得分:0)
std::set
旨在存储独特元素。
如果那样:
set<int> ret((int)ring.size());
本来可能会隐含地假设您要创建一个存储非唯一元素的容器。因此,这是不可能的(std::multiset
用于什么)。