一、vector::resize()簡介
vector::resize()
函數是C++ STL中vector容器中的一個非常常用的函數之一,它可以改變vector的大小,使其可以存儲更多或更少的元素。
下面我們會從以下幾個方面對vector::resize()
函數做詳細的闡述。
二、vector::resize()函數參數介紹
vector::resize()
函數有兩個參數,其中第一個參數為要改變的vector的大小,第二個參數為一個可選的默認值,如果指定了第二個參數,則在向vector中添加元素時,會將這個默認值插入到新分配的空間中,如果沒有指定,則默認使用元素類型的默認構造函數,其中第一參數是必須的,第二個參數是可選的。
void resize(size_type count, T value = {});
三、vector::resize()函數用法
1、在vector中添加元素
使用vector::resize()
函數可以在向vector中添加元素時實現自動擴容的功能,如下所示:
//代碼示例一
#include
#include
int main() {
std::vector nums;
nums.resize(10); // 將向量的大小改為10
std::cout << "nums size is: " << nums.size() << std::endl; // 輸出10
nums[9] = 100; // 向向量的最後一個元素中插入值100
for (int i : nums)
std::cout << i << '\n'; // 輸出0 0 0 0 0 0 0 0 0 100
return 0;
}
上述代碼中,vector對象nums擴容至10個元素,並插入了一個值為100的元素。
vector::resize()
函數還可以在向vector中加入元素時縮小vector的容量,如下所示:
//代碼示例二
#include
#include
int main() {
std::vector nums{1, 2, 3, 4, 5};
nums.resize(3);
std::cout << "nums size is: " << nums.size() << std::endl; // 輸出3
for (int i : nums)
std::cout << i << '\n'; // 輸出1 2 3
return 0;
}
上述代碼中,vector對象nums擴容至3個元素,會將nums中含有4和5的元素刪除,只保留前三個元素。
2、在vector中添加默認值
在使用vector::resize()
函數時,可以使用第二個函數參數為vector中新增的元素指定默認值,如下所示:
//代碼示例三
#include
#include
int main() {
std::vector nums;
nums.resize(10, 5); // 將vector擴容至10並填充5
for (int i : nums)
std::cout << i << '\n'; // 輸出5 5 5 5 5 5 5 5 5 5
return 0;
}
上述代碼中,nums.resize(10, 5)
將向量的大小改為10,並用數字5填充了前10個元素。
四、vector::resize()函數的局限性
使用vector::resize()
函數時需要注意以下幾個問題:
1、vector::resize()
函數會破壞向量中原有元素之間的相對關係,因此對於需要保持相相對關係的向量,不建議使用該函數。
2、對於使用vector::resize()
函數擴容的vector,其中新增加的元素會使用默認構造函數進行初始化,這可能不是程序員想要的行為。
3、對於使用vector::resize()
函數減小vector容量的情況,其中被刪除的元素也會調用其析構函數,這可能會對性能產生不良影響。
五、總結
本文從vector::resize()函數的參數和用法等多個方面進行了詳細的介紹,使讀者更好地理解這個函數的作用和使用方法。但同時本文也提到了該函數的三個局限性,因此在具體使用該函數時,需要根據具體情況權衡利弊。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/282886.html