學會C++中的vector的基本操作

vector 是 C++ 標準庫中的一個動態數組類,它可以在運行時自動調整大小,非常適合用于處理大小不確定的集合。下面是 vector 的常見用法示例,幫助你更好地理解如何使用它。

注意:所有用數組完成的任務都可以用vector完成。

1.?引入頭文件

首先,你需要引入 vector 的頭文件:

#include <vector>

2.?定義和初始化?vector

vector 可以通過幾種方式進行初始化:

#include <iostream>
#include <vector>
using namespace std;int main() {// 1. 默認構造一個空的 vectorvector<int> v1; // 2. 使用初始化列表初始化vector<int> v2 = {1, 2, 3, 4};// 3. 指定大小并初始化所有元素為0vector<int> v3(5, 0);  // 長度為5,所有元素初始化為0// 4. 使用其他 vector 初始化vector<int> v4(v2);  // 復制v2return 0;
}

3.?訪問元素

vector 允許通過下標或迭代器訪問元素,類似于數組。

cout << v2[0] << endl;  // 訪問第一個元素
cout << v2.at(1) << endl;  // 使用 at() 方法(有越界檢查)

4.?增加元素

使用 push_back() 可以向 vector 添加元素到末尾。

vector<int> v = {1, 2, 3};
v.push_back(4);  // 向末尾添加元素 4
cout << v[3] << endl;  // 輸出 4

5.?刪除元素

pop_back() 用于刪除 vector 中的最后一個元素。

v.pop_back(); // 刪除最后一個元素

如果你需要刪除 vector 中的某個特定位置的元素,可以使用 erase() 方法:

v.erase(v.begin() + 1); // 刪除索引1的元素? ?注意:索引=下標,索引1為第二個元素

6.?調整大小

resize() 方法用于調整 vector 的大小,可以縮小或擴展。

v.resize(5); // 將大小調整為 5(擴展或截斷)

7.?插入元素

insert() 方法可以在 vector 的任意位置插入元素。

v.insert(v.begin() + 1, 99); // 在索引1的位置插入 99

8.?遍歷元素

vector 支持使用迭代器進行遍歷:

for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {cout << *it << " ";
}
cout << endl;

或者使用范圍 for 循環(C++11 起支持):

for (int x : v) {cout << x << " ";
}
cout << endl;

9.?獲取大小

你可以使用 size() 方法獲取 vector 中元素的數量:

cout << "Size: " << v.size() << endl;

10.?檢查是否為空

使用 empty() 方法可以檢查 vector 是否為空。

if (v.empty()) {cout << "Vector is empty" << endl;
} else {cout << "Vector is not empty" << endl;
}

11.?容量管理

capacity() 方法返回 vector 當前的容量(實際分配的內存大小),可能大于實際的元素個數。你可以使用 reserve() 來增加 vector 的容量,避免多次擴容導致性能開銷。

cout << "Capacity: " << v.capacity() << endl;
v.reserve(20);  // 預先為 20 個元素分配空間

12.?清空元素

如果你想刪除所有元素,可以使用 clear() 方法:

v.clear(); // 刪除所有元素

完整示例

#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> v = {1, 2, 3};// 向 vector 中添加元素v.push_back(4);v.push_back(5);// 遍歷輸出元素for (int x : v) {cout << x << " ";  // 輸出 1 2 3 4 5}cout << endl;// 刪除最后一個元素v.pop_back();// 插入元素v.insert(v.begin() + 1, 99);  // 在索引1的位置插入 99// 輸出修改后的 vectorfor (int x : v) {cout << x << " ";  // 輸出 1 99 2 3 4}cout << endl;// 獲取大小和容量cout << "Size: " << v.size() << endl;  // 輸出 5cout << "Capacity: " << v.capacity() << endl;  // 輸出當前容量// 清空 vectorv.clear();cout << "Size after clear: " << v.size() << endl;  // 輸出 0return 0;
}

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

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

相關文章

AI時代工具:AIGC導航——AI工具集合

大家好!AIGC導航是一個匯集多種AIGC工具的平臺&#xff0c;提供了豐富的工具和資源。 工具功能?: 該平臺整合了多樣的AIGC工具&#xff0c;涵蓋了繪畫創作、寫作輔助以及視頻制作等多個領域。繪畫工具能夠生成高質量的圖像作品&#xff1b;寫作工具支持從構思到潤色的全流程寫…

java-SpringBoot框架開發計算器網頁端編程練習項目【web版】

今天分享一個使用springboot 寫一個 前后端不分離的項目&#xff0c;網頁計算器&#xff0c;來熟悉springboot框架的使用。 java版本&#xff1a;8。 springboot&#xff1a;2.6.13 使用的技術是&#xff1a; Java Spring Boot Thymeleaf HTML/CSS/JS 構建的 Web 端簡約按鈕…

linux操作系統的軟件架構分析

一、linux操作系統的層次結構 1.內核的主要功能 1&#xff09;進程管理 2&#xff09;內存管理 3&#xff09;文件系統 4&#xff09;進程間通信、I/O系統、網絡通信協議等 2.系統程序 1&#xff09;系統接口函數庫&#xff0c;比如libc 2)shell程序 3&#xff09;編譯器、編輯…

淺談Java對象在內存中的存儲形式

我們知道計算機以二進制的方式存儲數據&#xff0c;以 64 位虛擬機為例&#xff0c;Java 對象在內存中的存儲形式為&#xff1a; 開頭是 8 個字節的 markword&#xff0c;用于標記對象的狀態。&#xff08;也就是一個 long 型數據的大小。不妨記作對象頭里有一個長長的 markwo…

Android 開發問題:Wrong argument type for formatting argument ‘#2‘ in info_message

<string name"info_message">name: %1$s, age: %2$d</string>String str getString(R.string.info_message, "zs");在 Android 開發中&#xff0c;上述代碼&#xff0c;出現如下警告信息 Wrong argument type for formatting argument #2 in…

Vue+spring boot前后端分離項目搭建---小白入門

首先&#xff0c;介紹一下軟件準備工作 1.vscode 2.maven 3.vue搭建&#xff1a;node.jsyarnvite 一.后端搭建 打開vscode,建立一個springboot項目&#xff0c;參考鏈接&#xff1a;sping boot項目搭建 建立一個項目&#xff0c;目錄結構如下&#xff1a; helloController.java…

“蘇超”拉動周末消費,抖音生活服務:比賽城市迎來普遍消費上漲

“蘇超”爆火&#xff0c;有力拉升了緊隨賽程的周末消費。抖音生活服務數據顯示&#xff0c;剛剛過去的周末&#xff08;6月21日至22日&#xff09;&#xff0c;江蘇商圈休閑運動團購訂單消費環比增長225%&#xff0c;到店消費金額環比增長181%。雖然幾個比賽城市周末天氣欠佳&…

使用python開發一個exe版本的計算器項目練習

最近在練習python開發軟件&#xff0c;就開發了一個 客戶端版的 計算器。先給大家看一下 做出來的樣子 python版本&#xff1a;3.8 以上 主要是 使用 import tkinter as tk 這個庫來實現圖形界面開發 代碼還是比較簡單的&#xff1a; # 創建主窗口 root tk.Tk() root.title…

uniapp開發小程序,導出文件打開并保存,實現過程downloadFile下載,openDocument打開

uniapp開發小程序&#xff0c;導出文件打開并保存 實現思路 1、調用請求獲取到后端接口返回的下載文件的url路徑 &#xff08;注意必須是https的路徑&#xff0c;域名需要配置在微信小程序后臺的合法域名里面&#xff09; 2、使用 uni.downloadFile 方法 &#xff08;下載文件…

vue2中前端實現圖片裁剪上傳到服務器

在 Vue 2 中實現圖片裁剪并上傳到服務器&#xff0c;你可以結合使用 Cropper.js 來進行圖片裁剪&#xff0c;并通過 Axios 或者其他 HTTP 客戶端庫將裁剪后的圖片上傳至服務器。以下是一個基本的實現步驟和示例代碼&#xff1a; 步驟 安裝依賴&#xff1a;你需要安裝 cropperj…

C# 網絡編程-關于HttpWebRequest使用方式(二)

項目開發用到數據請求時候&#xff0c;會用的到HttpWebRequest的請求方式&#xff0c;主要涵蓋GET、POST、PUT、DELETE等方法 一、HttpWebRequest簡介 HttpWebRequest是.NET Framework中用于發送HTTP請求的核心類&#xff0c;適用于構建HTTP客戶端。它支持GET、POST、PUT、DE…

git變更記錄

目錄 wvp-ui -new Dji 10.60.2.175:8000上的編譯 個人拉分支 目前約定2025-06-25 wvp-ui -new branch new BASE_URL /new/ ci-cd : wvp-newui Config [Jenkins] 禁 用 10.30.2.8 ssh 10.30.2.8 /home/dualven/wvp-server/deployNewUi.sh Dji 主分支的構建&#xf…

前端如何禁止用戶復制?

禁用右鍵菜單 document.addEventListener(contextmenu, function(e) {e.preventDefault(); });禁用快捷鍵&#xff08;CtrlC/X/A等&#xff09; document.addEventListener(keydown, function(e) {if (e.ctrlKey && [c, x, v, a].includes(e.key.toLowerCase())) {e.…

阿里云無影:開啟云端辦公娛樂新時代

阿里云無影云電腦&#xff1a;打破傳統束縛&#xff0c;暢享云端自由 在數字化浪潮洶涌澎湃的當下&#xff0c;云計算技術持續革新&#xff0c;為我們的工作與生活帶來前所未有的變革。阿里云作為云計算領域的佼佼者&#xff0c;推出的無影云電腦無疑是一顆璀璨的明星&#xf…

Windows 和 macOS 串口調試軟件

在 Windows 和 macOS 上&#xff0c;你可以使用以下串口調試軟件來查看開發板的打印信息。以下是常見且好用的工具推薦&#xff1a; Windows 推薦工具 PuTTY 免費、輕量級&#xff0c;支持串口&#xff08;COM&#xff09;和 SSH/Telnet下載地址&#xff1a;https://www.putty.…

Redis 的作用及詳細分析

網上查詢總結了一下Redis相關的信息 記錄一下 &#xff0c;有問題的地方&#xff0c;望多加指正&#xff0c;我們共同學習。 什么是Redis Redis是一款內存高速緩存數據庫。Redis全稱為&#xff1a;Remote Dictionary Server &#xff08;遠程數據服務&#xff09;&#xff0c;…

【邊緣計算】引論基礎

&#xff08;1&#xff09;在不遠的未來&#xff0c;將有超過50%的數據需要在網絡邊緣側分析、處理與儲存。智能互聯的網絡邊緣側將會面臨如下挑戰&#xff1a; 聯接設備的海量與異構 隨著聯接設備數量的劇增&#xff0c;網絡運維管理、靈活擴展和可靠性保障都面臨著巨大挑戰。…

SpringBoot中4種登錄驗證碼實現方案

文章目錄 詳解方案一&#xff1a;基于kaptcha的圖形驗證碼實現步驟 方案二&#xff1a;基于短信驗證碼實現步驟 方案三&#xff1a;基于Spring Mail的郵箱驗證碼實現步驟 方案四&#xff1a;基于AJ-Captcha的滑動拼圖驗證碼實現步驟 總結 詳解 在Web應用中&#xff0c;驗證碼是…

基于版本控制+WORM的OSS數據保護:防勒索攻擊與法規遵從實踐

1. 數據保護的核心挑戰與解決方案架構 &#xff08;1&#xff09;現代數據保護的三大矛盾 勒索軟件進化 vs 傳統備份脆弱性&#xff1a;攻擊者已掌握備份系統刪除技術&#xff08;如vssadmin delete shadows&#xff09;法規保留要求&#xff08;GDPR第17條&#xff09;vs 技…

混合架構入門:如何選組合恰當的云 + 私有節點?

如果你最近剛開始搭建業務系統&#xff0c;或者準備從傳統IDC遷移到云上&#xff0c;你很可能已經被“混合云”、“多云”、“私有部署”這些概念繞得頭暈。而今天這篇文章&#xff0c;不會再羅列概念或抄定義&#xff0c;而是站在一個運維工程師、架構規劃者的角度&#xff0c…