我创建了一个struct包含两个变量的类型.我在a中使用这种数据类型vector,它再次存储在a中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;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用迭代器时,例如
std::vector<LA>::iterator it = b[x].begin();
Run Code Online (Sandbox Code Playgroud)
编译器给出了这个错误:
错误:没有可行的从'__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 …