C++从模板迭代器创建向量
C++ create vector from template iterators
我有一个函数,它将一些模板迭代器作为输入:
template<class Iterator, class Comparator>
void Merge(Iterator first, Iterator middle, Iterator last, Comparator cmp) {
在其中,我需要创建一个临时向量来存储从first
指向middle
的值。
有办法做到这一点吗?我试过类似的东西
vector<Iterator> temp(first, middle);
我并没有得到正确类型的向量。
示例代码:
#include <vector>
template<class Iterator>
void Merge(Iterator first, Iterator middle) {
std::vector<Iterator> temp(first, middle);
Iterator left_it = temp.begin();
}
int main() {
std::vector<int> myVec = {1, 2, 3, 4};
Merge(myVec.begin(), myVec.end());
return 0;
}
example.cpp:6:35: error: conversion from ‘std::vector<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::allocator<__gnu_cxx::__normal_iterator<int*, std::vector<int> > > >::iterator {aka __gnu_cxx::__normal_iterator<__gnu_cxx::__normal_iterator<int*, std::vector<int> >*, std::vector<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::allocator<__gnu_cxx::__normal_iterator<int*, std::vector<int> > > > >}’ to non-scalar type ‘__gnu_cxx::__normal_iterator<int*, std::vector<int> >’ requested
您需要创建迭代器值类型的向量,而不是迭代器的向量。您可以使用std::iterator_traits
从<iterator>
标头中获取值类型。
typedef typename std::iterator_traits<Iterator>::value_type value_type;
std::vector<value_type> temp(first, middle);
相关文章:
- 使用 back_inserter 从结构的单个成员创建向量
- 在模板类中创建向量 C++
- C 从参数参数包创建向量或列表
- 如何为基类通用类型创建向量以使用具体类型元素
- 在类中创建向量(2D 数组)的向量 - Error:C++ 需要所有声明的类型说明符
- 是否可以在堆栈上创建向量
- 为什么"new vector<int>[5]"不创建向量数组?
- 在不创建向量的情况下检查RCPP中的非限制值
- 如何在缓冲区周围创建向量
- 使用类对象创建向量时,不会调用类构造函数
- 特征不能直接从矩阵均值创建向量
- 从类型列表创建向量元组
- 如何创建向量的向量
- 从 c 数组创建向量
- 正在使用模板类c++重新创建向量
- 如何创建向量数组
- 在 cuda 内核中创建向量
- 如何在C++中修复这个创建向量
- C++从模板迭代器创建向量
- 用new创建向量安全吗