【发布时间】:2014-04-08 15:43:50
【问题描述】:
此代码是通过引用复制 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++ 新手,我想确定一下。我不知道如何检查
【问题讨论】:
-
它需要一个
const key_compare&,这样你就可以传递一个临时的。你也可以try it out 看看比较器的大小确实有影响。 -
再次感谢。看来我今天需要为所有这些答案付钱给你:)
标签: c++ templates stl set functor