此代码是通过引用复制comp还是每次复制整个对象?
如果在某个时刻有整个对象的副本,是否有另一种编码方式来避免这些副本?
Comparator comp(3);
set<string, Comparator> s1(comp);
set<string, Comparator> s2(comp);
set<string, Comparator> s3(comp);
set<string, Comparator> s4(comp);
Cpp参考声明:
容器保留使用的alloc和comp的内部副本 分配存储并在整个生命周期内对元素进行排序。
但构造函数看起来像是在做一个引用副本
explicit set (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
我是C ++的新手,我想确定它。我不知道怎么检查
答案 0 :(得分:3)
构造函数接受const引用,但它创建比较器的内部副本(使用该引用)。示例中的每个集合都有自己的comp
。