【发布时间】:2016-02-15 01:43:40
【问题描述】:
所以我有一个模板函数(?不确定它被称为那个。以“模板”开头并且是一个函数)向量,我想保存一些数据。问题是——数据可能由整数组成,可能由浮点数组成,可能由其他向量组成——我只有一个指向该类型变量的迭代器。我可以为该类型创建一个向量吗?就像是 “std::vector”之类的?
UPD。
template<class InputIterator, class UnaryPredicate>
void partial_sort (InputIterator first, InputIterator last, UnaryPredicate pred){
std::vector<????> to_sort;
我需要向量“to_sort”来保存被排序的向量所保存的数据,但我所拥有的只是指向第一个和最后一个元素的迭代器。
【问题讨论】:
-
std::vector 并没有真正的帮助。通过模板参数,向量可以是 ONE 类型,例如诠释。另一种可能性是创建一个 void* 列表并将它们转换为真实类型,但这很难看。也许您应该考虑存储可以处理问题域要求的自定义数据类型
-
可以添加你的功能码吗?
-
您能否显示模板函数的签名,即
template部分和所有参数的列表,直到左括号?如果您将未知类型的迭代器作为参数,请同时显示该迭代器。 -
一些代码会有所帮助。您可以使用
std::iterator_traits<It>::value_type获取迭代器指向的值的类型。因此,您可以通过std::vector<typename std::iterator_traits<It>::value_type> vec;定义您的向量,It是您的迭代器的类型。 -
@anhoppe 我不认为 OP 想在同一个向量中混合不同类型的项目;我认为他不知道创建模板捕获的类型的向量的语法。
标签: c++ templates vector iterator