【发布时间】:2012-06-02 00:17:12
【问题描述】:
我正在创建一个类,它是一种容器,我想创建一个构造函数,它可以像 std::vector 和其他标准容器一样采用“第一个”和“最后一个”迭代器。什么是正确的语法? (我想要一个模板,一个可以采用任何可用的第一个/最后一个迭代器类型的函数(比如我认为的标准库)。非常感谢!
例如,我想要类似的东西:
template<class ...> MyClass(... first, ... last)
但是……是什么?
非常感谢。
关于第一个答案: 我想要一个将迭代器作为参数的特定构造函数(因为我已经有将值和指针作为参数的构造函数)
编辑: 这样的事情可以吗?
template<class T1, class T2> MyClass(std::iterator<T1, T2> first, std::iterator<T1, T2> last)
【问题讨论】:
-
没有语法要求,但如果它暗示了类型概念,那就太客气了。类似
InputIterator或ForwardIterator... -
关于您的编辑:模板可以采用任何类型,因此您可以很好地传递迭代器,我不明白您的问题。
-
我已经有一个如下形式的构造函数: template
MyClass(T1 x, T2 y) 我想要一个特定的迭代器构造函数。但我不知道声明泛型迭代器的语法... -
那么你的设计有很大的问题。正如我在回答中指出的那样,“通用迭代器”类型只是一个模板。您可以限制模板,以便 only 迭代器可以通过,但是您的其他构造函数会出现模棱两可的情况。其他构造函数具体用于什么?