struct Compiler Error向量的C++迭代器

Lik*_*sic 4 c++ struct iterator vector

我创建了一个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 <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'禁用

这个错误的原因是什么?虽然我尝试了几个像运算符重载的东西,但我无法解决这个问题.任何帮助表示赞赏.

Lig*_*ica 8

你没有矢量LA; 你有一个矢量A.所以:

std::vector<A>::iterator it = b[x].begin();
Run Code Online (Sandbox Code Playgroud)

要么:

LA::iterator it = b[x].begin();
Run Code Online (Sandbox Code Playgroud)

看起来像一个简单的错字给我?

(鉴于这些可怕的类型名称,这并不奇怪...)