我正在尝试创建一个将返回 std::vector 的类方法,并且对执行此操作的最佳方法有点困惑。
我使用的方法是定义以下方法:
std::vector<double>* GetBins(void);
在方法中,分配一个新的 std::vector,我用数据填充它。我正在返回一个指向这个 ie 的指针。
std::vector<double>* Frequency::GetBins(void) {
std::vector<double> *rtnVec = new std::vector<double>();
for (_itMap = _mapFreq.begin(); _itMap != _mapFreq.end(); _itMap++ ) {
rtnVec->push_back((*_itMap).first);
}
return rtnVec;
}
(_itMap 是一个类定义的迭代器)。
在我的 main.cpp 中,我做了以下事情:
std::vector<double>* myBins;
myBins = myFreq3->GetBins();
delete myBins;
我知道用这种方法,除非我删除 main.cpp 代码中的指针,否则我会得到一个悬空指针,所以它已经有点“危险”了。从类方法返回新的 std::vector 的最佳方法是什么?
谢谢大家皮特