将std :: vector 转换为const std :: vector &Vec
问题描述:
我继承了一些代码,并且卡住了我认为应该是一个简单的更新。将std :: vector <const Type*>转换为const std :: vector <T, A>&Vec
我有以下功能
template<typename T>
class ArrayRef {
public:
typedef const T *iterator;
typedef const T *const_iterator;
private:
/// The start of the array, in an external buffer.
const T *Data;
public:
/// Construct an ArrayRef from a std::vector.
template<typename A>
ArrayRef(const std::vector<T, A> &Vec)
: Data(Vec.empty() ? (T*)0 : &Vec[0]), Length(Vec.size()) {}
};
,我需要通过一个载体,具有以下定义,该功能。
std::vector<const myType*> myVector(4);
要做到这一点,最简单的方法是什么?
答
只是通过你的载体:
ArrayRef<const myType*> myArrayRef(myVector);
是有一些原因,这并不为你工作?
+0
这是正确的,在其他地方存在编译错误,导致它无法正常工作(并吐出指向此行的错误消息)。现在修复。感谢您的回答。 – 2013-03-14 19:25:47
是函数的'T'和'A'模板参数吗?在这种情况下,它应该工作。如果它们不是,它们是什么类型,'T'与'myType'有关? – Grizzly 2013-03-14 18:51:54
我把整个函数定义放进去了,这是否更清楚? – 2013-03-14 18:55:49
代码中的T是什么? – 2013-03-14 18:56:26