gpt4 book ai didi

c++ - 需要解释一下,这一行到底发生了什么?

转载 作者:太空狗 更新时间:2023-10-29 20:07:59 24 4
gpt4 key购买 nike

我正在将一些 C++ 代码转换为 Python。但我不确定这条线到底做了什么。

vector<double>().swap(prev);

我编译了一个简单的程序来查看它实际做了什么,我发现它将 vector “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];

}
}

最佳答案

这是程序员出于某种原因决定的结果

vector<int>().swap(ax);

更清晰
ax.clear();

(前者将最初为空的匿名临时 vector<int>()ax 交换)。


也许不那么愤世嫉俗,swap方法可能重置 vector 的容量,而clear()从来不会。但这仍然是一个奇怪的选择:如果您想要重置容量,请使用

ax.clear();
ax.shrink_to_fit();

但即使是 that 也不能保证重置容量;由实现决定。

关于c++ - 需要解释一下,这一行到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com