我创建了一个包含两个变量的struct
类型。我在一个vector
中使用这个数据类型,然后再将它存储在一个map
中:
struct A {
int x;
Y y;
A() {};
A(int _x, Y _y) { x=_x, y=_y; };
};
typedef std::vector<A> LA;
typedef std::map<uint,LA> MB;
MB b;
当我尝试使用迭代器时,例如
std::vector<LA>::iterator it = b[x].begin();
编译器报错如下:
错误:从 '__wrap_iter< A *>' 到 '__wrap_iter< std::__1::vector < A, std::__1::allocator< A> > *>' 的转换无法实现 std::vector< LA>::iterator it = b[x].begin(); 候选构造函数(隐式复制构造函数)不可用:没有已知的转换,从 'iterator'(即 '__wrap_iter< pointer>')到 'const std::__1::__wrap_iter< std::__1::vector< A, > std::__1::allocator< A> > *> &' 的第一个参数 class__wrap_iter 候选构造函数(隐式移动构造函数)不可用:没有已知的转换,从 'iterator'(即 '__wrap_iter< pointer>')到 'std::__1::__wrap_iter< std::__1::vector< A, > std::__1::allocator< A> > *> &&' 的第一个参数 class__wrap_iter 候选模板被忽略:被 'enable_if' 禁用
这个错误的原因是什么?虽然我尝试了几种方法,比如运算符重载,但是我还是解决不了这个问题。希望能得到帮助。
LA::iterator it = b[x].begin();
- paulsm4