最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++vector的insert函數(shù)用法小結(jié)

 更新時間:2025年03月14日 11:01:36   作者:*TQK*  
std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復(fù)雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧

在 C++ 中,std::vector 是一個動態(tài)數(shù)組,提供了靈活的內(nèi)存管理和豐富的成員函數(shù)。insert 函數(shù)是 std::vector 提供的一個非常有用的成員函數(shù),用于在指定位置插入元素或另一個范圍的元素。

std::vector::insert 的用法

1. 插入單個元素

iterator insert(const_iterator pos, const T& value);

pos:插入位置的迭代器(指向要插入位置的前一個元素)。

value:要插入的元素。

2. 插入多個相同的元素

void insert(const_iterator pos, size_type count, const T& value);

pos:插入位置的迭代器。

count:要插入的元素數(shù)量。

value:要插入的元素。

3. 插入一個范圍的元素

template <class InputIterator>
void insert(const_iterator pos, InputIterator first, InputIterator last);

pos:插入位置的迭代器。

first:范圍的起始迭代器。

last:范圍的結(jié)束迭代器。

4. 插入初始化列表中的元素(C++11 及以上)

void insert(const_iterator pos, initializer_list<T> ilist);

pos:插入位置的迭代器。

ilist:初始化列表。

示例代碼

示例 1:插入單個元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, 99); // 在索引2的位置插入99
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

輸出:

1 2 99 3 4 5

示例 2:插入多個相同的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, 3, 99); // 在索引2的位置插入3個99
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

輸出:

1 2 99 99 99 3 4 5

示例 3:插入一個范圍的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec1 = {1, 2, 3, 4, 5};
    vector<int> vec2 = {99, 100, 101};
    vec1.insert(vec1.begin() + 2, vec2.begin(), vec2.end()); // 在索引2的位置插入vec2的所有元素
    for (int num : vec1) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

輸出:

1 2 99 100 101 3 4 5

示例 4:插入初始化列表中的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, {99, 100, 101}); // 在索引2的位置插入初始化列表中的元素
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

輸出:

1 2 99 100 101 3 4 5

注意事項

迭代器失效

插入操作會使插入點之后的所有迭代器失效。如果需要在插入后繼續(xù)使用迭代器,建議重新獲取。

例如:

auto it = vec.begin() + 2;
vec.insert(it, 99);
it = vec.begin() + 2; // 重新獲取迭代器

性能

插入操作的時間復(fù)雜度為 O(n),其中 n 是插入點之后的元素數(shù)量。這是因為插入操作可能需要移動插入點之后的所有元素。

內(nèi)存分配

如果插入操作導(dǎo)致 vector 的容量不足,vector 會自動重新分配內(nèi)存,這可能會導(dǎo)致所有迭代器失效。

總結(jié)

std::vector::insert 是一個非常靈活的函數(shù),可以用于在指定位置插入單個元素、多個相同的元素、一個范圍的元素或初始化列表中的元素。通過合理使用 insert 函數(shù),可以方便地操作 vector 的內(nèi)容。

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

相關(guān)文章

  • C語言詳細(xì)分析講解關(guān)鍵字const與volatile的用法

    C語言詳細(xì)分析講解關(guān)鍵字const與volatile的用法

    在C語言中,我們經(jīng)常會見到const和volatile這兩個關(guān)鍵字,那么我們今天就來介紹下這兩個關(guān)鍵字,提起?const?關(guān)鍵字,我們可能首先想到的是經(jīng)過它修飾的變量便是常量了。其實我們這種想法是錯誤的,其實?const?修飾的變量是只讀的,其本質(zhì)還是變量
    2022-04-04
  • C語言三個函數(shù)的模擬實現(xiàn)詳解

    C語言三個函數(shù)的模擬實現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了C語言三個函數(shù)的模擬實現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++中關(guān)于this指針的入門介紹

    C++中關(guān)于this指針的入門介紹

    this?指針在C++類和對象中是個很方便實用的關(guān)鍵字,可以簡化對象成員屬性的調(diào)用,使代碼表達(dá)的含義更加準(zhǔn)確;在之前的學(xué)習(xí)中我們都可以判斷變量所占內(nèi)存空間大小,那么我們創(chuàng)建的類對象所占的內(nèi)存空間怎么計算呢?想知道this的妙用和類對象占用的內(nèi)存空間就來跟我學(xué)習(xí)吧
    2022-07-07
  • C語言中結(jié)構(gòu)體實例解析

    C語言中結(jié)構(gòu)體實例解析

    大家好,本篇文章主要講的是C語言中結(jié)構(gòu)體實例解析,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C語言實現(xiàn)將double/float 轉(zhuǎn)為字符串(帶自定義精度)

    C語言實現(xiàn)將double/float 轉(zhuǎn)為字符串(帶自定義精度)

    這篇文章主要介紹了C語言實現(xiàn)將double/float 轉(zhuǎn)為字符串(帶自定義精度),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 基于C語言實現(xiàn)簡易三子棋游戲

    基于C語言實現(xiàn)簡易三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實現(xiàn)簡易三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>
    2022-01-01
  • 實例解析C++設(shè)計模式編程中簡單工廠模式的采用

    實例解析C++設(shè)計模式編程中簡單工廠模式的采用

    這篇文章主要介紹了C++設(shè)計模式編程中簡單工廠模式的采用實例,在簡單工廠模式中程序往往利用封裝繼承來降低耦合度,需要的朋友可以參考下
    2016-03-03
  • C++智能指針weak_ptr的作用詳解

    C++智能指針weak_ptr的作用詳解

    weak_ptr是一個智能指針,也是一個類模板,本文主要介紹了C++智能指針weak_ptr的作用詳解,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 詳解如何將c語言文件打包成exe可執(zhí)行程序

    詳解如何將c語言文件打包成exe可執(zhí)行程序

    這篇文章主要介紹了詳解如何將c語言文件打包成exe可執(zhí)行程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C++學(xué)習(xí)進(jìn)階篇之類大小計算和this指針

    C++學(xué)習(xí)進(jìn)階篇之類大小計算和this指針

    this是C++中的一個關(guān)鍵字,也是一個const指針,它指向當(dāng)前對象,通過它可以訪問當(dāng)前對象的所有成員,下面這篇文章主要給大家介紹了關(guān)于C++學(xué)習(xí)進(jìn)階篇之類大小計算和this指針的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評論

当涂县| 湖北省| 冷水江市| 洪泽县| 偃师市| 新宁县| 铁力市| 苗栗市| 文昌市| 乳山市| 乐亭县| 山阴县| 云霄县| 油尖旺区| 宝兴县| 丰城市| 元朗区| 连城县| 台江县| 桐乡市| 仪陇县| 蚌埠市| 邵东县| 楚雄市| 亚东县| 五寨县| 浑源县| 新闻| 永吉县| 太仆寺旗| 吉林省| 沿河| 柞水县| 湘西| 中江县| 临清市| 抚远县| 历史| 英超| 昭苏县| 长泰县|