【发布时间】:2013-07-01 19:37:50
【问题描述】:
按照this question 上的建议,我正在尝试这样做。但是,在运行时我收到一个错误“向量迭代器不兼容”,如下所示:
std::vector<SE> all;
all.insert(all.end(),p->ev.begin(),p->ev.end());
p 指向的类包含一个成员
std::vector<SE> ev;
向量 ev 可能为空,在这种情况下,我希望 'all' 保持不变。否则,我希望将 p->ev 的所有元素以相同的顺序添加到 'all' 的末尾。
我做错了什么?
Visual Studio 2010 C++,32 位 Windows XP
附加信息:使用调试器,我追踪了错误消息的近因,因为 p->ev.begin() 的“拥有容器”为 0。我不知道“拥有容器”是什么意思。
【问题讨论】:
-
请发布错误信息。
-
发布更多代码和错误。
-
错误消息的全部内容是“向量迭代器不兼容”。
-
您能否提供类
p指向定义以及如何创建p?到目前为止,p似乎没有初始化属性。 -
类 P{std::vector
ev}。创建 p 是在包含 all.insert 的类中;它有一个成员'P pArray [300]'。我知道 p 是有效的,因为我可以在调试器中看到它的数据。此外,p->ev.begin 在调试器中显示来自 P 类的正确 SE。
标签: c++ vector stl concatenation