我正在将一些C ++代码转换为python。但是我不确定这行到底是做什么的。
vector<double>().swap(prev);
Run Code Online (Sandbox Code Playgroud)
我编译了一个简单的程序以查看其实际作用,发现它会将向量“ prev”的大小调整为0。
#include <vector>
#include <iostream>
using namespace std;
int main(){
vector<int> ax;
ax.reserve(10);
for(int i=99; i<110; ++i){
ax.push_back(i);
}
for(int i=0; i<ax.size(); ++i){
std::cout << ax[i] << ' ';
}
vector<int>().swap(ax);
cout<<"\nAfter space \n";
cout<<"size is "<<ax.size();
for(int i=0; i<ax.size(); ++i){
std::cout << ax[i];
}
}
Run Code Online (Sandbox Code Playgroud)
这是程序员出于某种原因决定的结果,
vector<int>().swap(ax);
Run Code Online (Sandbox Code Playgroud)
比...清楚
ax.clear();
Run Code Online (Sandbox Code Playgroud)
(前者交换最初是空的匿名临时vector<int>()使用ax)。
也许有点不合时宜,该swap方法可能会重置向量的容量,而clear()永远不会重置。但这仍然是一个奇怪的选择:如果您想重置容量,请使用
ax.clear();
ax.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)
但是即使那样也不能保证重置容量;由实施决定。