当一个或多个元素改变大小时,矢量会发生什么?
详细说明,
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> v;
v.push_back("first string");
v.push_back("2nd string");
v[0] += " has increased in size";
}
Run Code Online (Sandbox Code Playgroud)
在"v [0] + = ......"会发生什么?是否会进行大规模重新分配,以保持字符串和向量中的内存连续?
No. string将实际字符串数据存储在单独分配的内存中(模数短字符串优化).对象的实际大小永远不会改变,并且在编译时是固定的.任何这样的动态大小调整都是使用单独分配的内存或对象的层次结构来完成的(例如,set/map使用节点树,list使用双链节点列表等).
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |