通过引用设置构造函数复制?

时间:2014-04-08 15:43:50

标签: c++ templates stl set functor

此代码是通过引用复制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 ++的新手,我想确定它。我不知道怎么检查

1 个答案:

答案 0 :(得分:3)

构造函数接受const引用,但它创建比较器的内部副本(使用该引用)。示例中的每个集合都有自己的comp

副本