std::vector – 動態數組容器

std::vector 是 C++ 標準庫提供的動態數組容器,它是一個能夠存儲任意類型的數據,並且能夠自動擴展和縮小容量的容器。

一、使用方法

使用 std::vector 首先需要包含頭文件 <vector>

#include <vector>

定義一個 std::vector 對象:

std::vector<int> vec; // 定義一個 int 類型的 vector 對象

std::vector 中添加元素:

vec.push_back(1); // 向 vector 中添加一個元素 1
vec.push_back(2); // 向 vector 中添加一個元素 2
vec.push_back(3); // 向 vector 中添加一個元素 3

遍歷 std::vector 中的元素:

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 輸出 vector 中的元素
}
// 輸出:1 2 3

二、容量操作

通過 std::vector 提供的容量操作,我們可以查詢和修改 vector 的容量信息。

查詢 vector 的容量信息:

std::cout << vec.size() << std::endl; // 輸出 vector 的元素個數
std::cout << vec.capacity() << std::endl; // 輸出 vector 的容量
std::cout << vec.empty() << std::endl; // 判斷 vector 是否為空

修改 vector 容量:

vec.resize(5); // 將 vector 的容量改為 5,未使用的元素初始化為默認值
vec.reserve(10); // 將 vector 的容量預留為 10,但 vector 的元素個數不變
vec.shrink_to_fit(); // 將 vector 的容量縮小到當前元素個數,節省不必要的空間

三、元素操作

通過 std::vector 提供的元素操作,我們可以對 vector 中的元素進行訪問、修改、添加和刪除等操作。

1. 訪問元素

使用 std::vector 提供的下標操作或迭代器操作訪問 vector 中的元素。

vec[0]; // 訪問 vector 中 index 為 0 的元素
vec.at(0); // 訪問 vector 中 index 為 0 的元素,越界時會拋出異常
vec.front(); // 返回 vector 的第一個元素
vec.back(); // 返回 vector 的最後一個元素

2. 修改元素

使用 std::vector 提供的下標操作或迭代器操作修改 vector 中的元素。

vec[0] = 4; // 修改 vector 中 index 為 0 的元素為 4
*vec.begin() = 5; // 修改 vector 中第一個元素為 5

3. 添加元素

使用 std::vector 提供的 push_back() 操作向 vector 中添加元素。

vec.push_back(4); // 向 vector 中添加一個元素 4

4. 刪除元素

使用 std::vector 提供的 erase() 操作刪除 vector 中的元素。

vec.erase(vec.begin() + 1); // 刪除 vector 中下標為 1 的元素
vec.pop_back(); // 刪除 vector 中的最後一個元素

四、注意事項

1. 對於大規模的數據處理,使用 std::vector 可能會佔用過多的內存。

2. 在循環中遍歷 vector 元素時,應該使用迭代器進行操作,避免下標訪問越界。

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 輸出 vector 中的元素
}

3. 對 vector 進行擴容、縮容等操作時,可能會影響 vector 中元素在內存中的存儲位置。

五、總結

std::vector 提供了一個靈活的動態數組容器,能夠存儲任意類型的數據,並且能夠自動擴展和縮小容量。同時,通過 std::vector 提供的容量操作和元素操作,我們可以方便地查詢和修改 vector 的容量信息,以及對 vector 中的元素進行訪問、修改、添加和刪除等操作。使用 std::vector 需要注意的是內存佔用和迭代器操作。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/302707.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 18:13
下一篇 2024-12-31 11:48

相關推薦

  • QML 動態加載實踐

    探討 QML 框架下動態加載實現的方法和技巧。 一、實現動態加載的方法 QML 支持從 JavaScript 中動態指定需要加載的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29
  • Java創建一個有10萬個元素的數組

    本文將從以下方面對Java創建一個有10萬個元素的數組進行詳細闡述: 一、基本介紹 Java是一種面向對象的編程語言,其強大的數組功能可以支持創建大規模的多維數組以及各種複雜的數據…

    編程 2025-04-28
  • Python數組隨機分組用法介紹

    Python數組隨機分組是一個在數據分析與處理中常用的技術,它可以將一個大的數據集分成若干組,以便於進行處理和分析。本文將從多個方面對Python數組隨機分組進行詳細的闡述,包括使…

    編程 2025-04-28

發表回復

登錄後才能評論