这可能是一个基本问题。我的课程看起来像这样:
class Foo {
private:
vector<MyStructure> data;
public:
void read(const cv::FileNode& node) {
// read data from file
cv::FileNode n = node["MyStructure"];
cv::FileNodeIterator it = n.begin(), it_end = n.end();
for (int i = 0; it != it_end; ++it, ++i) {
*it >> data[i]; // there's a problem here.
}
}
}
请注意,这it
是一个指向MyStructure
container 中元素的迭代器n
。这是我遇到的问题。我不知道vector<MyStructure> data
提前的大小(当我构造对象时)。所以我不能简单地分配*it >> data[i]
. 此代码可以编译,但会因运行时错误而崩溃。我怎样才能解决这个问题?如果可能,解决方案需要高效(也就是说,它应该避免制作太多的MyStructure
对象副本)。