深入淺出vector::resize()

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:06
下一篇 2024-12-22 08:06

相關推薦

  • 深入淺出統計學

    統計學是一門關於收集、分析、解釋和呈現數據的學科。它在各行各業都有廣泛應用,包括社會科學、醫學、自然科學、商業、經濟學、政治學等等。深入淺出統計學是指想要學習統計學的人能夠理解統計…

    編程 2025-04-25
  • Java的vector用法詳解

    一、vector的用法 java中的vector是可變長度的動態數組,類似於c++中的vector。可以存儲任何數據類型,但需要保證類型一致。下面是一個vector的使用示例: i…

    編程 2025-04-25
  • 深入淺出torch.autograd

    一、介紹autograd torch.autograd 模塊是 PyTorch 中的自動微分引擎。它支持任意數量的計算圖,可以自動執行前向傳遞、後向傳遞和計算梯度,同時提供很多有用…

    編程 2025-04-24
  • c++ vector頭文件詳解

    一、vector介紹 vector是c++ STL(Standard Template Library)中的一個容器,它能夠動態地增加或減少容器的大小,並且支持快速的隨機訪問。ve…

    編程 2025-04-24
  • 深入淺出SQL佔位符

    一、什麼是SQL佔位符 SQL佔位符是一種佔用SQL語句中某些值的標記或佔位符。當執行SQL時,將使用該標記替換為實際的值,並將這些值傳遞給查詢。SQL佔位符使查詢更加安全,防止S…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web伺服器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • 深入淺出ThinkPHP框架

    一、簡介 ThinkPHP是一款開源的PHP框架,它遵循Apache2開源協議發布。ThinkPHP具有快速的開發速度、簡便的使用方式、良好的擴展性和豐富的功能特性。它的核心思想是…

    編程 2025-04-24
  • 深入淺出arthas火焰圖

    arthas是一個非常方便的Java診斷工具,包括很多功能,例如JVM診斷、應用診斷、Spring應用診斷等。arthas使診斷問題變得更加容易和準確,因此被廣泛地使用。artha…

    編程 2025-04-24
  • 深入淺出AWK -v參數

    一、功能介紹 AWK是一種強大的文本處理工具,它可以用於數據分析、報告生成、日誌分析等多個領域。其中,-v參數是AWK中一個非常有用的參數,它用於定義一個變數並賦值。下面讓我們詳細…

    編程 2025-04-24
  • 深入淺出Markdown文字顏色

    一、Markdown文字顏色的背景 Markdown是一種輕量級標記語言,由於其簡單易學、易讀易寫,被廣泛應用於博客、文檔、代碼注釋等場景。Markdown支持使用HTML標籤,因…

    編程 2025-04-23

發表回復

登錄後才能評論