c++ vector remove

一、基本概念

vector是STL中的一個容器,可實現動態數組的功能。它是一段連續的內存空間,可以存儲變量,變量的存儲大小是固定的,也就是所謂的容器大小。當需要往該容器中插入數據時,如果所需空間超出了容器當前的大小,會重新分配一塊更大的連續內存空間,然後將舊內存空間的內容複製到新內存空間中,並釋放舊內存空間。

vector的remove函數用於刪除vector中指定元素,它實際上並不會直接刪除該元素,而是將該元素和後面所有元素依次往前移動,並修改vector的大小。因此,該操作的時間複雜度為O(n)。

二、函數參數與返回值

vector的remove函數的參數為待刪除元素的迭代器,返回值為指向容器結尾的迭代器。

    iterator remove(iterator position);
    iterator remove(iterator first, iterator last);

第一種情況,刪除迭代器position所指向的元素,返回值指向容器結尾的迭代器。第二種情況,刪除[first, last)範圍內的所有元素,返回值同樣指向容器結尾的迭代器。

三、使用示例

下面是一個使用remove函數刪除vector中特定元素的例子。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // 刪除4
    vector<int>::iterator it = find(v.begin(), v.end(), 4);
    v.erase(it);

    // 刪除5、6、7
    it = find(v.begin(), v.end(), 5);
    v.erase(it, it+3);

    for(auto i = v.begin(); i != v.end(); i++)
        cout << *i << " ";
    cout << endl;

    return 0;
}

在上面的代碼中,首先定義了一個含有10個元素的vector,然後通過find函數找到要刪除的元素的位置,再調用erase函數刪除該元素。與此同時,也演示了如何刪除一個範圍內的元素,即刪除[5, 7)之間的元素。

四、注意點

1. vector刪除元素後,迭代器會失效,因此要保證在erase操作之後,其後的迭代器都要重新獲得一下。

2. 如果只是想簡單地從vector中刪除元素,建議直接使用erase函數,因為remove函數需要使用迭代器,稍顯麻煩。

3. 刪除元素後建議使用shrink_to_fit函數縮小vector的容量,以節省內存。

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

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

相關推薦

  • Java的vector用法詳解

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

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

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

    編程 2025-04-24
  • jQuery remove() 方法的詳細介紹

    一、選取 jQuery中的remove()方法是用於刪除指定元素及其子元素的方法。它的基本語法如下: $(selector).remove(); 其中的selector可以是指定要…

    編程 2025-04-23
  • vector初始化賦值詳解

    一、基礎概念 vector是一個封裝了動態大小數組的順序容器(Sequence Container)。與C-style數組不同,它能夠根據需要自動擴展,它是連續存儲的,與數組一樣高…

    編程 2025-04-22
  • Java Map Remove詳解

    一、Map.remove() Map.remove(Object key)方法用於根據key刪除Map中的entry。如果Map中不存在這個key,則不進行任何操作。remove(…

    編程 2025-04-18
  • 深入探析vector添加元素

    一、初始化vector 1、動態初始化vector 使用vector時,我們需要先將其初始化,vector可以有多種初始化方式。其中動態初始化是指我們需要在程序運行時才能確定vec…

    編程 2025-04-12
  • 詳解vector的reserve函數

    一、概述 在C++的STL中,vector是一種很常用的容器,它可以存放任意類型的數據,並且可以動態增加或減少元素個數。其中,reserve函數是vector的一個重要函數,它可以…

    編程 2025-04-12
  • C++ Vector初始化

    一、定義和構造函數 C++中的vector是一個類模板,它是一種動態數組,支持在數組的尾部增加或刪除元素。在使用vector進行初始化時,有兩種常見的方法。 第一種是使用定義和構造…

    編程 2025-04-12
  • 深入剖析vector的長度

    一、長度的定義 Vector是C++標準庫中一個非常重要的容器,它可以動態地增加或減少存儲在其中的元素,而且還能夠在O(1)的時間複雜度下實現常數時間的隨機訪問。Vector中有一…

    編程 2025-02-25
  • vector二維數組的詳解

    vector是C++ STL庫中非常常用的容器之一,它的特點是動態分配內存,可以根據實際情況自動擴容。而二維數組則是一個由多個一維數組組成的數組,可以看成是一個表格,具有行列的性質…

    編程 2025-02-24

發表回復

登錄後才能評論