【发布时间】:2015-11-19 12:42:43
【问题描述】:
我创建了一个包含两个变量的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' 到没有可行的转换 '__wrap_iter > *>' std::vector
::iterator it = b[x].begin(); 候选构造函数(隐式复制构造函数)不可行:没有从 'iterator'(又名 '__wrap_iter
')到 'const std::__1::__wrap_iter std::__1::allocator > *> &' 用于第一个参数 class__wrap_iter 候选构造函数(隐式移动构造函数)不可行:没有已知的从“迭代器”(又名>“__wrap_iter”)到“std::__1::__wrap_iter<:__1::vector> std::__1::allocator > *> &&' 用于第一个参数 class__wrap_iter
候选模板被忽略:被“enable_if”禁用
这个错误的原因是什么?尽管我尝试了几种操作符重载之类的方法,但我无法解决这个问题。任何帮助表示赞赏。
【问题讨论】:
-
建议:
LA::iterator it = b[x].begin(); -
@paulsm4:我已经说过了。在答案部分。它属于哪里!
标签: c++ vector struct iterator