考虑这样的事情:
typedef std::unordered_multiset<int> Set;
typedef std::set<Set> SetOfSets;
SetOfSets somethingRecursive(SomeType somethingToAnalyze) {
Set s;
// ...
// check base cases, reduce somethingToAnalyze, fill in s
// ...
SetOfSets ss = somethingRecursive(somethingToAnalyze);
ss.insert(s);
return ss;
}
这种方法对于生成子集、排列等问题是相当标准的。但是,我尝试制作一个图表,说明返回值优化应该在这里优化什么,因为该类型的内部数据结构相当复杂(std::unordered_multiset
是一个哈希表,并且std::set
“通常' 一个二叉搜索树),好吧,我只能希望编译器比我更聪明。
那么,谈论性能和(如果重要的话)C++14
,我可以在这里返回一个SetOfSets
还是应该通过引用将它作为输出参数传递?