如何创建一个变量类型的向量?

时间:2015-11-13 13:03:28

标签: c++ templates vector iterator

所以我有一个模板功能(?不确定它的名称。开始使用'模板'并且是一个函数)向量,我想要保存一些数据。问题是 - 数据可能由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;能够保存正在排序的向量的数据,但我只有迭代器指向第一个和最后一个元素。

3 个答案:

答案 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;