一、長度的定義
Vector是C++標準庫中一個非常重要的容器,它可以動態地增加或減少存儲在其中的元素,而且還能夠在O(1)的時間複雜度下實現常數時間的隨機訪問。Vector中有一個非常重要的屬性——長度,長度可以用size()函數獲取。長度是指在vector中存儲元素的個數,也是vector中尾元素的下標值加1。
std::vector vec {1, 2, 3, 4, 5}; // 定義一個長度為5的int型vector
std::cout << vec.size(); // 輸出5
二、長度的改變
Vector的長度可以通過多種方式來改變,從而達到向vector中添加或刪除元素的目的。
方法1. push_back
向vector中添加一個元素
std::vector vec {1, 2, 3};
vec.push_back(4);
// vec變成{1, 2, 3, 4}
方法2. emplace_back
向vector中添加多個元素
std::vector<std::string> vec;
vec.emplace_back("hello");
vec.emplace_back("world");
// vec變成{"hello", "world"}
方法3. pop_back
從vector中刪除最後一個元素
std::vector<int> vec {1, 2, 3, 4, 5};
vec.pop_back();
// vec變成{1, 2, 3, 4}
方法4. resize
改變vector的長度,如果新的長度小於原來的長度,就會刪除多餘的元素,否則在vector的末尾添加默認構造函數的元素
std::vector<int> vec {1, 2, 3};
vec.resize(5);
// vec變成{1, 2, 3, 0, 0}
三、長度的優化
在使用vector時,我們應該儘可能地提高它的效率。以下是一些可以優化vector長度的方法:
方法1. 預留一定空間
在向vector中添加元素時,如果已經預留了一定數量的空間,那麼就可以避免不必要的重新分配內存和拷貝操作,從而提高效率。
std::vector<int> vec;
vec.reserve(1000);
// 這裡的1000是一個合適的數值
方法2. 使用移動語義
在向vector中添加元素時,如果已經預留了一定數量的空間,那麼就可以避免不必要的重新分配內存和拷貝操作,從而提高效率。
std::vector<std::string> vec;
vec.emplace_back("hello");
std::string s = "world";
vec.push_back(std::move(s)); // 使用移動語義添加元素
方法3. 使用shrink_to_fit
當我們想要刪除vector中的一部分元素時,可以使用shrink_to_fit函數來釋放內存。shrink_to_fit會將vector的容量縮小到與當前的size相同。
std::vector<int> vec {1, 2, 3, 4, 5};
vec.pop_back();
vec.shrink_to_fit();
四、長度的應用
Vector的長度在很多應用中都非常重要,下面是一些常見的應用場景:
方法1. 遍歷vector
在遍歷vector時,我們通常會使用vector的長度作為循環的上界。
std::vector<int> vec {1, 2, 3, 4, 5};
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " ";
}
// 輸出1 2 3 4 5
方法2. 處理異常情況
在處理異常的時候,我們通常會檢查vector的長度是否為0,以免訪問不存在的元素。
std::vector<int> vec;
if (!vec.empty()) {
std::cout << vec[0] << std::endl;
}
方法3. 調整vector
在某些場景下,我們需要根據vector的長度來進行一些調整。
std::vector<int> vec {1, 2, 3, 4, 5};
if (vec.size() > 10) {
vec.resize(10);
}
五、總結
Vector的長度是非常重要的,它可以幫助我們實現向vector中添加或刪除元素的目的,同時也會影響到vector的效率。在使用vector時,我們需要根據實際情況選擇合適的長度,並且採取一些優化措施,以提高vector的效率。
原創文章,作者:AAWCL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361809.html