我創建了一個包含兩個變量的struct
類型。我使用的是vector
內這個數據類型,再存入一個map
,如下:結構編譯器錯誤的向量的C++迭代器
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();
編譯器給出了這樣的錯誤:
error: no viable conversion from '__wrap_iter< A *>' to '__wrap_iter< std::__1::vector < A, std::__1::allocator< A> > *>' std::vector< LA>::iterator it = b[x].begin();
candidate constructor (the implicit copy constructor) not viable: no known conversion from 'iterator' (aka '__wrap_iter< pointer>') to 'const std::__1::__wrap_iter< std::__1::vector< A, > std::__1::allocator< A> > *> &' for 1st argument class__wrap_iter
candidate constructor (the implicit move constructor) not viable: no known conversion from 'iterator' (aka > '__wrap_iter< pointer>') to 'std::__1::__wrap_iter< std::__1::vector< A, > std::__1::allocator< A> > *> &&' for 1st argument class__wrap_iter
candidate template ignored: disabled by 'enable_if'
這個錯誤的原因是什麼?儘管我嘗試了幾個操作符重載的東西,但我無法解決這個問題。任何幫助表示讚賞。
建議:'LA :: iterator it = b [x] .begin();' – paulsm4
@ paulsm4:我已經說過了。在答案部分。它屬於哪裏! –