我有一个包含向量的类(foo)。
如果我尝试像这样迭代向量中的元素:
for(vector<random>::iterator it = foo.getVector().begin();
it != foo.getVector().end(); ++it) {
cout << (*it) << endl;
}
第一个元素总是损坏并返回垃圾数据。
但是,如果执行以下操作:
vector<random> v = foo.getVector();
for(vector<random>::iterator it = v.begin();
it != v.end(); ++it) {
cout << (*it) << endl;
}
一切似乎都运行良好。有没有我不知道的“陷阱”?
我也试过做 cout << foo.getVector()[0] << endl; 在循环之外,但这似乎工作正常。
谢谢。
编辑:
这是我的头文件:
#ifndef HITS
#define HITS
#include <vector>
#include "wrappers.h"
class Hits {
public:
Hits();
std::vector<word_idx_value> getVector() {return speech_hits;}
const std::vector<word_idx_value> getVector() const {return speech_hits;}
void add(const word_idx_value&);
Hits &operator+=(const Hits&);
private:
std::vector<word_idx_value> speech_hits;
};
#endif