这是代码,我很困惑。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函数是如何工作的,没有相关的解释。
根据给定的std::vector<int> v;定义,std::vector<int>().swap(v);清除向量v并处置其保留的内存(以便v.capacity()返回 0)。从 C++11 开始,可以说更好的编写方法是:
v.clear();
v.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)