所以我有一个模板功能(?不确定它的名称。开始使用'模板'并且是一个函数)向量,我想要保存一些数据。问题是 - 数据可能由int组成,可能由浮点数组成,可能由其他向量组成 - 我只有一个指向该类型变量的迭代器。我可以为该类型创建一个向量吗?就像是 "的std ::矢量"或者那样?
UPD。
template<class InputIterator, class UnaryPredicate>
void partial_sort (InputIterator first, InputIterator last, UnaryPredicate pred){
std::vector<????> to_sort;
我需要矢量&#39; to_sort&#39;能够保存正在排序的向量的数据,但我只有迭代器指向第一个和最后一个元素。
答案 0 :(得分:4)
template <class It>
void myFunction (It b, It e) {
auto vec = std::vector<typename std::iterator_traits<It>::value_type> { b, e };
// now vec is filled with copies of the values between b and e
}
答案 1 :(得分:2)
使用
std::vector<typename std::iterator_traits<InputIterator>::value_type> to_sort(first, last);
// to_sort will be having all values between [first, last)
或
typedef typename std::iterator_traits<InputIterator>::value_type _value_type;
std::vector<_value_type> to_sort(first, last);
// to_sort will be having all values between [first, last)
答案 2 :(得分:1)
使用c ++ 14,您可以使用
typedef std::remove_reference<decltype(*first)>::type ValueType;
std::vector<ValueType> vec;