gpt4 book ai didi

c++ - STL resize()的优点

转载 作者:太空狗 更新时间:2023-10-29 23:31:44 25 4
gpt4 key购买 nike

resize() 函数使 vector 包含所需数量的元素。如果我们需要的元素少于 vector 已经包含的元素,则最后的元素将被删除。如果我们要求 vector 增长,它会扩大其大小并用零填充新创建的元素。

 vector<int> v(20); 
for(int i = 0; i < 20; i++) {
v[i] = i+1;
}
v.resize(25);

for(int i = 20; i < 25; i++) {
v[i] = i*2;
}

但是如果我们在 resize() 之后使用 push_back()它会在新分配的大小之后添加元素,而不是 INTO 它。 在上面的例子中,结果 vector 的大小是 25,而如果我们在第二个循环中使用 push_back(),它将是 30。

 vector<int> v(20); 
for(int i = 0; i < 20; i++) {
v[i] = i+1;
}
v.resize(25);
for(int i = 20; i < 25; i++) {
v.push_back(i*2); // Writes to elements with indices [25..30), not [20..25) ! <
}

那么resize()函数的优势在哪里呢?它不会对从 vector 中索引和访问元素造成混淆吗?

最佳答案

听起来您应该使用 vector::reserve .

vector::resize用于使用给定值(或只是默认值)初始化新创建的空间。该函数的第二个参数是要使用的初始化值。

关于c++ - STL resize()的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219772/

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