欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中使用vector存儲并遍歷數(shù)據(jù)的基本步驟

 更新時間:2025年01月29日 09:31:12   作者:左手の明天  
C++標(biāo)準(zhǔn)模板庫(STL)提供了多種容器類型,包括順序容器、關(guān)聯(lián)容器、無序關(guān)聯(lián)容器和容器適配器,每種容器都有其特定的用途和特性,這篇文章主要介紹了C++中使用vector存儲并遍歷數(shù)據(jù)的基本步驟,需要的朋友可以參考下

在C++中,容器是用于存儲和管理一組數(shù)據(jù)對象的類模板。C++標(biāo)準(zhǔn)模板庫(STL)提供了幾種主要的容器類型,每種容器都有其特定的用途和特性。

(1)容器及簡要描述

以下是C++中一些主要的容器及其簡要描述:

  • ‌順序容器‌

    • vector:一個動態(tài)數(shù)組,可以隨機訪問元素,且在尾部添加或刪除元素效率較高。
    • deque(雙端隊列):一個雙端動態(tài)數(shù)組,支持在頭部和尾部添加或刪除元素。
    • list:一個雙向鏈表,支持在任何位置快速插入和刪除元素,但不支持隨機訪問。
    • forward_list:一個單向鏈表,比list更輕量級,但只支持單向遍歷。
    • array:一個固定大小的數(shù)組,大小在編譯時確定,不支持動態(tài)改變大小。
  • ‌關(guān)聯(lián)容器‌

    • set:一個集合,存儲唯一且有序的元素,底層通常實現(xiàn)為紅黑樹。
    • multiset:與set類似,但允許存儲重復(fù)元素。
    • map:一個鍵值對容器,其中每個鍵都是唯一的,且按鍵排序,底層通常也實現(xiàn)為紅黑樹。
    • multimap:與map類似,但允許鍵重復(fù)。
  • ‌無序關(guān)聯(lián)容器‌(基于哈希表):

    • unordered_set:一個集合,存儲唯一元素,但不保證元素順序,底層實現(xiàn)為哈希表。
    • unordered_multiset:與unordered_set類似,但允許存儲重復(fù)元素。
    • unordered_map:一個鍵值對容器,鍵唯一,但不保證鍵的順序,底層實現(xiàn)為哈希表。
    • unordered_multimap:與unordered_map類似,但允許鍵重復(fù)。
  • ‌容器適配器‌:

    • stack:一個后進先出(LIFO)的容器適配器,通?;?code>deque或vector實現(xiàn)。
    • queue:一個先進先出(FIFO)的容器適配器,通常基于deque實現(xiàn)。
    • priority_queue:一個優(yōu)先隊列,元素根據(jù)優(yōu)先級排序,通?;?code>vector并使用堆排序算法實現(xiàn)。

每種容器都有其特定的接口和成員函數(shù),用于管理其存儲的數(shù)據(jù)。選擇哪種容器取決于具體的應(yīng)用場景和需求,比如數(shù)據(jù)的訪問模式、插入和刪除操作的頻率、是否需要有序存儲等。

在使用C++容器時,了解它們的性能特征和底層實現(xiàn)對于編寫高效代碼至關(guān)重要。例如,vector在添加元素時可能需要重新分配內(nèi)存和復(fù)制數(shù)據(jù),而list在插入和刪除元素時則不需要移動其他元素,但訪問元素的速度較慢。因此,在選擇容器時,需要根據(jù)具體的應(yīng)用場景進行權(quán)衡。

(2)使用 vector 存儲和遍歷數(shù)據(jù)的基本步驟

在C++中,vector 是一個非常靈活的容器,它能夠存儲任何類型的對象,并且能夠動態(tài)地增長和縮小。下面是如何使用 vector 存儲和遍歷數(shù)據(jù)的基本步驟:

1. 包含頭文件

首先,需要包含 <vector> 頭文件來使用 vector。

#include <vector>

2. 創(chuàng)建 vector

可以創(chuàng)建一個 vector 來存儲特定類型的元素。例如,創(chuàng)建一個存儲整數(shù)的 vector

std::vector<int> numbers;

3. 向 vector 中添加元素

可以使用 push_back() 方法向 vector 中添加元素。

numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);

4. 遍歷 vector

有幾種方法可以遍歷 vector 中的元素:

方法1:使用范圍for循環(huán)(C++11及以后)

for (int number : numbers) {
    std::cout << number << " ";
}

std::cout << std::endl;

方法2:使用迭代器

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

std::cout << std::endl;

方法3:使用下標(biāo)訪問(不推薦在循環(huán)中使用,除非你知道索引)

for (size_t i = 0; i &lt; numbers.size(); ++i) {
    std::cout &lt;&lt; numbers[i] &lt;&lt; " ";
}

std::cout &lt;&lt; std::endl;

方法4:使用 auto 關(guān)鍵字(C++11及以后)簡化迭代器寫法

for (auto it = numbers.begin(); it != numbers.end(); ++it) {
    std::cout << *it << " ";
}

std::cout << std::endl;

5. 使用標(biāo)準(zhǔn)庫算法(可選)

也可以使用標(biāo)準(zhǔn)庫中的算法,如 std::for_each,來遍歷 vector。

#include <algorithm> // 包含算法頭文件

#include <iostream> // 包含輸入輸出流頭文件

std::for_each(numbers.begin(), numbers.end(), [](int n) { std::cout << n << " "; });

std::cout << std::endl;

這些是使用 vector 存儲和遍歷數(shù)據(jù)的基本方法。

(3)簡單實例

在C++中,std::vector 是一個動態(tài)數(shù)組,能夠根據(jù)需要自動調(diào)整其大小,非常適合用于存儲和管理數(shù)據(jù)。以下是一個簡單的示例,展示了如何使用 std::vector 存儲和遍歷數(shù)據(jù)。

示例代碼

#include <iostream>
#include <vector>

int main() {
    // 創(chuàng)建一個整數(shù)類型的vector
    std::vector<int> numbers;

    // 向vector中添加數(shù)據(jù)
    numbers.push_back(10);
    numbers.push_back(20);
    numbers.push_back(30);
    numbers.push_back(40);
    numbers.push_back(50);

    // 使用范圍for循環(huán)遍歷vector并輸出數(shù)據(jù)
    std::cout << "Using range-based for loop:" << std::endl;
    for (int number : numbers) {
        std::cout << number << " ";
    }
    std::cout << std::endl;

    // 使用傳統(tǒng)的索引for循環(huán)遍歷vector并輸出數(shù)據(jù)
    std::cout << "Using traditional for loop:" << std::endl;
    for (size_t i = 0; i < numbers.size(); ++i) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    // 使用迭代器遍歷vector并輸出數(shù)據(jù)
    std::cout << "Using iterator:" << std::endl;
    for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

解釋

  • 包含頭文件‌:

    • #include <iostream> 用于輸入輸出流。
    • #include <vector> 用于使用 std::vector 容器。
  • 創(chuàng)建vector‌:

    • std::vector<int> numbers; 創(chuàng)建一個整數(shù)類型的 vector。
  • 添加數(shù)據(jù)‌:

    • numbers.push_back(10); 向 vector 末尾添加數(shù)據(jù)。
  • 范圍for循環(huán)遍歷‌:

    • for (int number : numbers) 使用范圍for循環(huán),簡潔地遍歷 vector 中的每一個元素。
  • 傳統(tǒng)索引for循環(huán)遍歷‌:

    • for (size_t i = 0; i < numbers.size(); ++i) 使用傳統(tǒng)的索引for循環(huán),通過下標(biāo)訪問 vector 中的元素。
  • 迭代器遍歷‌:

    • for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) 使用迭代器遍歷 vector,這種方式在需要對 vector 進行修改時非常有用。

注意事項

  • std::vector 會自動管理內(nèi)存,當(dāng)添加新元素時,它會自動調(diào)整大小。
  • 使用 push_back 方法可以在 vector 末尾添加元素。
  • 訪問 vector 元素時要注意不要越界,可以使用 size() 方法獲取 vector 的大小。
  • 使用迭代器時,可以通過 begin() 和 end() 方法獲取迭代器的起始和結(jié)束位置。

通過以上方法,可以方便地使用 std::vector 存儲和遍歷數(shù)據(jù)。

總結(jié)

到此這篇關(guān)于C++中使用vector存儲并遍歷數(shù)據(jù)的文章就介紹到這了,更多相關(guān)C++ vector存儲并遍歷數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言指針基礎(chǔ)詳解

    C語言指針基礎(chǔ)詳解

    這篇文章主要介紹了C語言指針的基礎(chǔ),主要對C語言中指針的本質(zhì)及常見用法做了較為通俗易懂的分析,是后續(xù)深入學(xué)習(xí)C語言的基礎(chǔ),需要的朋友可以參考下
    2021-10-10
  • C語言實現(xiàn)排序算法之歸并排序詳解

    C語言實現(xiàn)排序算法之歸并排序詳解

    這篇文章主要介紹了C語言實現(xiàn)排序算法之歸并排序,對歸并排序的原理及實現(xiàn)過程做了非常詳細的解讀,需要的朋友可以參考下
    2014-07-07
  • Qt定時器和隨機數(shù)詳解

    Qt定時器和隨機數(shù)詳解

    在前一篇中我們介紹了鍵盤和鼠標(biāo)事件,其實還有一個非常常用的事件,就是定時器事件,如果要對程序?qū)崿F(xiàn)時間上的控制,那么就要使用到定時器。而隨機數(shù)也是很常用的一個功能,在我們要想產(chǎn)生一個隨機的結(jié)果時就要使用到隨機數(shù)。本文我們就來簡單介紹一下定時器和隨機數(shù)。
    2015-06-06
  • 用c 獲取文件MD5值的實現(xiàn)方法

    用c 獲取文件MD5值的實現(xiàn)方法

    本篇文章是對用c語言獲取文件MD5值的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • openCV4.1.1+VS2019環(huán)境配置詳解

    openCV4.1.1+VS2019環(huán)境配置詳解

    這篇文章主要介紹了openCV4.1.1+VS2019環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C++?數(shù)據(jù)結(jié)構(gòu)超詳細講解順序表

    C++?數(shù)據(jù)結(jié)構(gòu)超詳細講解順序表

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示
    2022-03-03
  • C語言中對字母進行大小寫轉(zhuǎn)換的簡單方法

    C語言中對字母進行大小寫轉(zhuǎn)換的簡單方法

    這篇文章主要介紹了C語言中對字母進行大小寫轉(zhuǎn)換的簡單方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • C語言實現(xiàn)班級檔案管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)班級檔案管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)班級檔案管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++ Template應(yīng)用詳解

    C++ Template應(yīng)用詳解

    本篇文章主要介紹了C++ Template應(yīng)用詳解,模板(Template)指C++程序設(shè)計設(shè)計語言中采用類型作為參數(shù)的程序設(shè)計,支持通用程序設(shè)計。
    2016-12-12
  • C++簡單五子棋的AI設(shè)計實現(xiàn)

    C++簡單五子棋的AI設(shè)計實現(xiàn)

    這篇文章主要為大家詳細介紹了C++簡單五子棋的AI設(shè)計實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論