數據結構:動態數組vector

vector?是 C++ 標準庫的動態數組。

在C語言中一般初學者會使用malloc,int[n]等方式來創建靜態數組,但是這種方式繁瑣且容易出錯。我們做算法題一般使用動態數組vector, 并且在刷題網站的題目給的輸入一般也是vector類型。

?示例:vector的初始化如下:

#include <vector>int n = 7, m = 8;// 初始化一個 int 型的空數組 nums
vector<int> nums;// 初始化一個大小為 n 的數組 nums,數組中的值默認都為 0
vector<int> nums(n);// 初始化一個元素為 1, 3, 5 的數組 nums
vector<int> nums{1, 3, 5};// 初始化一個大小為 n 的數組 nums,其值全都為 2
vector<int> nums(n, 2);// 初始化一個二維 int 數組 dp
vector<vector<int>> dp;// 初始化一個大小為 m * n 的布爾數組 dp,
// 其中的值都初始化為 true
vector<vector<bool>> dp(m, vector<bool>(n, true));

vector的操作示例:

?

#include <iostream>
#include <vector>
using namespace std;int main() {int n = 10;// 數組大小為 10,元素值都為 0vector<int> nums(n);cout << nums.empty() << endl;  // 輸出 0 (false)cout << nums.size() << endl;   // 輸出:10nums.push_back(20);   // 在數組尾部插入一個元素 20cout << nums.size() << endl;  // 輸出:11cout << nums.back() << endl;  // 得到數組最后一個元素的引用     輸出:20nums.pop_back();     // 刪除數組的最后一個元素(無返回值)cout << nums.size() << endl;     // 輸出:10nums[0] = 11;        // 可以通過方括號直接取值或修改cout << nums[0] << endl;       // 輸出:11nums.insert(nums.begin() + 3, 99);      // 在索引 3 處插入一個元素 99nums.erase(nums.begin() + 2);       // 刪除索引 2 處的元素swap(nums[0], nums[1]);       // 交換 nums[0] 和 nums[1]// 遍歷數組// 0 11 99 0 0 0 0 0 0 0for (int i = 0; i < nums.size(); i++) {cout << nums[i] << " ";}cout << endl;
}

另外,根據數組的特性,利用索引訪問元素很高效,從尾部刪除元素也是很高效的;但是從中間或者頭部刪除或增加元素需要數據搬移,很低效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70629.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于深度學習的信號濾波:創新技術與應用挑戰

一、引言 1.1 研究背景 隨著科技的不斷發展&#xff0c;信號處理領域面臨著越來越復雜的挑戰。在眾多信號處理技術中&#xff0c;基于深度學習的信號濾波技術逐漸嶄露頭角&#xff0c;成為研究的熱點。 基于深度學習的信號濾波在信號處理領域具有至關重要的地位。如今&#…

前端八股——JS+ES6

前端八股&#xff1a;JSES6 說明&#xff1a;個人總結&#xff0c;用于個人復習回顧&#xff0c;將持續改正創作&#xff0c;已在語雀公開&#xff0c;歡迎評論改正。

醫院安全(不良)事件上報系統源碼,基于Laravel8開發,依托其優雅的語法與強大的擴展能力

醫院安全&#xff08;不良&#xff09;事件上報系統源碼 系統定義&#xff1a; 規范醫院安全&#xff08;不良&#xff09;事件的主動報告&#xff0c;增強風險防范意識&#xff0c;及時發現醫院不良事件和安全隱患&#xff0c;將獲取的醫院安全信息進行分析反饋&#xff0c;…

H3C交換機路由器防火墻FTP/TFTP服務器搭建。

軟件介紹。 3CDaemon 2.0 - Download 3CDaemon 是一款集成了多種網絡服務功能的工具軟件&#xff0c;主要用于網絡管理和文件傳輸&#xff0c;支持TFTP、FTP、Syslog等多種協議&#xff0c;廣泛應用于網絡設備的配置和管理。 1. 主要功能 TFTP服務器&#xff1a;支持TFTP協議…

數據庫連接管理--Java連接數據庫的幾種方式

1.數據庫連接管理 1.1 使用JDBC獲取連接 JDBC是Java標準庫提供的API&#xff0c;用于連接和操作關系型數據庫。它是最基礎、最常用的數據庫連接方式。 步驟&#xff1a; 加載數據庫驅動。建立連接。創建Statement或PreparedStatement對象。執行SQL查詢或更新。處理結果集。關…

如何使用Spring boot框架實現圖書管理系統

使用 Spring Boot 框架實現圖書管理系統可以按照以下步驟進行&#xff0c;涵蓋了從項目搭建、數據庫設計、后端接口開發到前端頁面展示的整個流程。 1. 項目搭建 可以使用 Spring Initializr&#xff08;https://start.spring.io/ &#xff09;來快速創建一個 Spring Boot 項目…

【網絡安全 | 漏洞挖掘】賬戶接管+PII+原漏洞繞過

文章目錄 前言正文前言 本文涉及的所有漏洞測試共耗時約三周,成果如下: 訪問管理面板,成功接管目標列出的3000多家公司。 獲取所有員工的真實指紋、機密文件及個人身份信息(PII)。 繞過KYC認證,成功接管電話號碼。 繞過此前發現的漏洞。 正文 在測試目標時,我發現了一…

深度學習學習筆記(34周)

目錄 摘要 Abstracts 簡介 Hourglass Module&#xff08;Hourglass 模塊&#xff09; 網絡結構 Intermediate Supervision&#xff08;中間監督&#xff09; 訓練過程細節 評測結果 摘要 本周閱讀了《Stacked Hourglass Networks for Human Pose Estimation》&#xf…

JVM類文件結構深度解析:跨平臺基石與字節碼探秘

目錄 一、類文件&#xff1a;Java生態的通用語言 1.1 字節碼的橋梁作用 1.2 類文件核心優勢 二、類文件二進制結構剖析 2.1 整體結構布局 2.2 魔數與版本控制 2.3 常量池&#xff1a;類文件的資源倉庫 2.4 訪問標志位解析 三、核心數據結構詳解 3.1 方法表結構 3.2 …

wps中zotero插件消失,解決每次都需要重新開問題

參考 查看zotero目錄 D:\zotero\integration\word-for-windows 加載項點擊 dotm即可 長期解決 把dom 復制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN還是每次都需要重新開的話 重新加載一下

如何設計合理的樹狀結構表:平衡查詢效率與維護效率

樹狀結構廣泛應用于數據建模中&#xff0c;例如 商品分類、組織架構、權限管理 等場景。合理設計樹形結構的數據庫表&#xff0c;能夠有效提升 查詢效率 和 維護效率。本文將探討如何在設計時平衡這兩者&#xff0c;詳細介紹常用的幾種樹狀結構存儲方式及其適用場景。 一、樹狀…

List 接口中的 sort 和 forEach 方法

List 接口中的 sort 和 forEach 方法是 Java 8 引入的兩個非常實用的函數&#xff0c;分別用于 排序 和 遍歷 列表中的元素。以下是它們的詳細介紹和用法&#xff1a; sort 函數 功能 對列表中的元素進行排序。 默認使用自然順序&#xff08;如數字從小到大&#xff0c;字符…

深度學習驅動的車牌識別:技術演進與未來挑戰

一、引言 1.1 研究背景 在當今社會&#xff0c;智能交通系統的發展日益重要&#xff0c;而車牌識別作為其關鍵組成部分&#xff0c;發揮著至關重要的作用。車牌識別技術廣泛應用于交通管理、停車場管理、安防監控等領域。在交通管理中&#xff0c;它可以用于車輛識別、交通違…

GitCode 助力至善云學:構建智慧教育平臺

項目倉庫&#xff1a; 前端&#xff1a;https://gitcode.com/Fer_Amiya/vue-ZhiShanYunXue-Client 后端&#xff1a;https://gitcode.com/Fer_Amiya/go-ZhiShanYunXue-Server 突破傳統教學困境&#xff0c;探索教育新解法 傳統教學的習題講評環節&#xff0c;教師面臨著難以…

系統架構設計師備考策略

一、備考痛點 系統架構設計師考試以 知識體系龐雜、實踐性強 著稱&#xff0c;官方教材《系統架構設計師教程&#xff08;第2版&#xff09;》厚達 700 余頁&#xff0c;若盲目通讀耗時費力。根據近三年考情分析&#xff0c;“抓重點 分層突破 實戰輸出” 是高效通關的核心策…

nnUNet V2修改網絡——加入MultiResBlock模塊

更換前,要用nnUNet V2跑通所用數據集,證明nnUNet V2、數據集、運行環境等沒有問題 閱讀nnU-Net V2 的 U-Net結構,初步了解要修改的網絡,知己知彼,修改起來才能游刃有余。 MultiRes Block 是 MultiResUNet 中核心組件之一,旨在解決傳統 U-Net 在處理多尺度醫學圖像時的局…

verilog基礎知識

一,Verilog和VHDL區別 全世界高層次數字系統設計領域中,應用Verilog和VHDL的比率是80%和20%;這兩種語言都是用于數字電路系統設計的硬件描述語言, 而且都已經是 IEEE 的標準。 VHDL 是美國軍方組織開發的,VHDL1987年成為標準;Verilog 是由一個公司的私有財產轉化而來,…

HarmonyOS 開發套件 介紹——下篇

HarmonyOS 開發套件 介紹——下篇 在HarmonyOS的生態中&#xff0c;開發套件作為支撐整個系統發展的基石&#xff0c;為開發者提供了豐富而強大的工具和服務。本文將深入繼續介紹HarmonyOS SDK、ArkCompiler、DevEco Testing、AppGallery等核心組件&#xff0c;幫助開發者全面掌…

小懌學習日記(七) | Unreal引擎燈光架構

燈光的布局對于HMI場景中車模的展示效果有著舉足輕重的地位。本篇內容將簡單介紹ES3.1的相關知識&#xff0c;再深入了解Unreal引擎中車模的燈光以及燈光架構。 一、關于ES3.1 1.1 什么是ES3.1 ES3.1這個概念對于美術的同學可能比較陌生&#xff0c;ES3.1指的是OpenGL ES3.1&…

【洛谷排序算法】P1012拼數-詳細講解

這道題本質上是通過確定數字的拼接順序來得到最大拼接數&#xff0c;雖然主要思路是利用字符串及其比較規則來實現&#xff0c;但也可以基于數組結合一些轉換操作來解決&#xff0c;以下是大致思路和代碼示例&#xff1a; 【算法思路】 首先將輸入的數字存儲在數組中。然后自…