我刚刚开始使用 C++ 的标准库,我首先开始使用的是 std::vector
。我对 vector 中的 capacity()
有点困惑。我知道在每次 push_back()
之后, vector 的 capacity
以指数幂变化,但在下面的输出中 capacity
保持不变有时值,即使在插入之后。有人可以向我解释一下内部工作吗?
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
int capacity=v.capacity();
cout<<"Capacity before push_back(): "<<capacity<<endl;
for(int i=0;i<10;i++){
v.push_back(i);
cout<<"Capacity: "<<v.capacity()<<endl;
}
for(auto j=v.begin();j!=v.end();j++){
cout<<*j<<endl;
}
cout<<"Size of vector: "<<v.size()<<endl;
cout<<"Final Capacity of vector: "<<v.capacity()<<endl;
return 0;
}
输出:
Capacity before push_back(): 0
Capacity: 1
Capacity: 2
Capacity: 4
Capacity: 4
Capacity: 8
Capacity: 8
Capacity: 8
Capacity: 8
Capacity: 16
Capacity: 16
0
1
2
3
4
5
6
7
8
9
Size of vector: 10
Final Capacity of vector: 16
最佳答案
I know that after each push_back() the capacity of the vector changes in exponential powers but in the above OUTPUT the capacity is still remaining same sometimes even after insertion.
当capacity大于插入后的size时,capacity不需要,保证不变。
此策略允许顺序推回具有恒定的复杂性(摊销)。
关于c++ - C++ vector 的 size() 和 capacity(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62959007/