相关疑难解决方法(0)

C++删除矢量,对象,空闲内存

我完全混淆了在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)

c++ vector delete-operator

46
推荐指数
5
解决办法
15万
查看次数

C++ vector :: clear

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?谢谢!

c++ vector

23
推荐指数
4
解决办法
9935
查看次数

与 C++ 交换函数混淆: std::vector&lt;int&gt;().swap(search_indices);

这是代码,我很困惑。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函数是如何工作的,没有相关的解释。

c++ swap stdvector

0
推荐指数
1
解决办法
221
查看次数

标签 统计

c++ ×3

vector ×2

delete-operator ×1

stdvector ×1

swap ×1