我需要编写一个小函数,使新的 std::set 从现有元素中获取最后 n 个元素。
这是代码:
template <typename S, typename T, typename Z>
std::set<T,S,Z> get_first_subset(std::set<T,S,Z> const& set, size_t size) {
if (size == 0)
return std::set<T,S,Z>();
typename std::set<T,S,Z>::reverse_iterator j = set.rbegin();
std::advance(j, size - 1);
return std::set<T,S,Z> ((++j).base(), set.end());
}
它可以工作,但是因为我不需要访问类型 T、S 和 Z,我想知道是否有一种方法可以简单地说“任何 std::set”而无需三个模板参数。