我完全混淆了在C++中删除东西的问题如果我声明了一个对象数组并且我使用了该clear()函数.我可以确定内存已经发布了吗?
例如 :
tempObject obj1;
tempObject obj2;
vector<tempObject> tempVector;
tempVector.pushback(obj1);
tempVector.pushback(obj2);
Run Code Online (Sandbox Code Playgroud)
我可以安全地打电话清除以释放所有内存吗?或者我是否需要逐个删除才能删除?
tempVector.clear();
Run Code Online (Sandbox Code Playgroud)
如果将此场景更改为对象指针,答案是否与上述相同?
vector<tempObject> *tempVector;
//push objects....
tempVector->clear();
Run Code Online (Sandbox Code Playgroud) vector <weight> decoy;
void clear_decoy() {
decoy.clear();
vector<weight> (decoy).swap(decoy);
}
Run Code Online (Sandbox Code Playgroud)
在上面的方法中clear_decoy(),请问vector<weight> (decoy).swap(decoy); 是什么意思?
该方法是否清楚decoy?谢谢!
这是代码,我很困惑。swap函数通常用于交换两个参数的值,例如a.swap(b)或swap(a, b)。这里有什么意义呢swap?
std::vector<int> search_indices;
std::vector<float> distances;
int keypointNum = 0;
do
{
keypointNum++;
std::vector<int>().swap(search_indices);
std::vector<float>().swap(distances);
int id;
iterUnseg = unVisitedPtId.begin();
id = *iterUnseg;
indices->indices.push_back(features[id].ptId);
unVisitedPtId.erase(id);
tree.radiusSearch(features[id].pt, _curvature_non_max_radius, search_indices, distances);
for (int i = 0; i < search_indices.size(); ++i)
{
unVisitedPtId.erase(search_indices[i]);
}
} while (!unVisitedPtId.empty());
Run Code Online (Sandbox Code Playgroud)
我查了一下swap函数是如何工作的,没有相关的解释。