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

?C++中assign函數(shù)的使用

 更新時間:2025年07月14日 10:39:32   作者:紅石程序員  
在C++標準模板庫中,std::list等容器都提供了assign成員函數(shù),它比操作符更靈活,支持多種初始化方式,下面就來介紹一下assign的用法,具有一定的參考價值,感興趣的可以了解一下

?在 C++ 標準模板庫(STL)中,std::vector、std::string、std::list 等容器都提供了 assign 成員函數(shù),用于重新分配容器內容。它比 = 操作符更靈活,支持多種初始化方式。本文將詳細介紹 assign 的用法、性能分析及適用場景。

?1.assign的基本功能?

assign 的主要作用是:

  1. ?清空容器?:移除所有現(xiàn)有元素。
  2. ?重新填充?:用指定的新內容替換原有數(shù)據。

?語法

void assign(size_type count, const T& value);  // (1) 填充 n 個相同值
void assign(InputIt first, InputIt last);       // (2) 用迭代器范圍賦值
void assign(std::initializer_list<T> ilist);    // (3) 用初始化列表賦值

?2. 具體用法示例?

??(1) 填充n個相同值

std::vector<int> vec;
vec.assign(5, 100);  // 填充 5 個 100
// vec = {100, 100, 100, 100, 100}

??(2) 用迭代器范圍賦值

std::list<int> source = {1, 2, 3, 4, 5};
std::vector<int> vec;
vec.assign(source.begin(), source.end());  // 復制 list 的內容
// vec = {1, 2, 3, 4, 5}

??(3) 用初始化列表{...}賦值

std::vector<int> vec;
vec.assign({10, 20, 30});  // 直接賦值初始化列表
// vec = {10, 20, 30}

3.assignvsoperator=

操作功能適用場景
assign支持多種初始化方式(迭代器、初始化列表、填充值)需要動態(tài)調整容器內容時
operator=僅支持直接賦值(= 或初始化列表)簡單賦值時

?示例對比:?

std::vector<int> vec1, vec2;

// 用 assign 賦值
vec1.assign({1, 2, 3});  // 支持初始化列表

// 用 = 賦值
vec2 = {1, 2, 3};        // 僅 C++11 及以上支持

?4. 性能分析?

  • ?時間復雜度?:O(n)(n 為新元素的數(shù)量)
  • ?與 clear() + push_back() 的對比?:
    • assign 更高效,因為它是批量操作,而 push_back 可能觸發(fā)多次內存重分配。
  • ?適用場景?:
    • 需要完全替換容器內容時(如從文件/數(shù)據庫加載新數(shù)據)。
    • 需要從其他容器復制數(shù)據時(如 std::list → std::vector)。

5. 其他容器的assign

std::string str;
str.assign(5, 'A');  // "AAAAA"

std::list<int> lst;
lst.assign({10, 20, 30});  // {10, 20, 30}

?6. 實際應用場景?

??(1) 動態(tài)更新容器內容

std::vector<int> loadDataFromDatabase() {
    // 模擬從數(shù)據庫讀取數(shù)據
    return {101, 102, 103, 104};
}

int main() {
    std::vector<int> cache;
    cache.assign(loadDataFromDatabase().begin(), loadDataFromDatabase().end());
    // cache = {101, 102, 103, 104}
}

??(2) 清空并重新填充

std::vector<std::string> logs;

// 清空舊日志,加載新日志
logs.assign({"Error: 404", "Warning: Low memory", "Info: Session started"});

?7. 總結?

特性說明
?功能?清空容器并用新內容替換
?靈活性?支持迭代器、初始化列表、填充值
?性能?O(n),比 clear() + push_back() 更高效
?適用容器?std::vector, std::string, std::list, std::deque 等

?推薦使用場景?:

  • 需要完全替換容器內容時。
  • 需要從其他容器復制數(shù)據時。
  • 需要高效初始化大量相同值(如 vec.assign(1000, 0))。

?8. 進一步思考?

  • ?assign 和 resize 的區(qū)別:resize 只調整大小,不改變原有數(shù)據(除非縮小)。
  • ?assign 和 insert 的區(qū)別:insert 是在指定位置插入,而 assign 是先清空再填充。

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

相關文章

  • C語言中的const和free用法詳解

    C語言中的const和free用法詳解

    C語言中的const和C++中的const是有區(qū)別的,而且在使用VS編譯測試的時候,如果是C的話,請一定要建立一個后綴為C的文件,不要是CPP的文件。因為,兩個編譯器會有差別的。下面通過本文給大家分享C語言中的const和free用法,感興趣的朋友一起看看吧
    2017-04-04
  • 使用C語言實現(xiàn)字符串左旋和右旋問題

    使用C語言實現(xiàn)字符串左旋和右旋問題

    這篇文章主要介紹了使用C語言實現(xiàn)字符串左旋和右旋問題,需要的朋友可以參考下
    2018-07-07
  • C/C++?Qt數(shù)據庫與SqlTableModel組件應用教程

    C/C++?Qt數(shù)據庫與SqlTableModel組件應用教程

    SqlTableModel?組件可以將數(shù)據庫中的特定字段動態(tài)顯示在TableView表格組件中,這篇文章將主要介紹SqlTableModel組件一些常用的操作,需要的朋友可以參考一下
    2021-12-12
  • OpenCV獲取圖像中直線上的數(shù)據具體流程

    OpenCV獲取圖像中直線上的數(shù)據具體流程

    對圖像進行處理時,經常會有這類需求:客戶想要提取出圖像中某條直線或者ROI區(qū)域內的感興趣數(shù)據,進行重點關注,怎么操作呢,下面小編通過實例代碼介紹下OpenCV獲取圖像中直線上的數(shù)據,一起看看吧
    2021-11-11
  • 區(qū)分c++中的聲明與定義

    區(qū)分c++中的聲明與定義

    這篇文章主要介紹了如何區(qū)分c++中的聲明與定義,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08
  • error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法

    error LNK2019: 無法解析的外部符號 問題的解決辦法,需要的朋友可以參考一下
    2013-05-05
  • C++常對象精講_const關鍵字的用法

    C++常對象精講_const關鍵字的用法

    用const修飾的聲明數(shù)據成員稱為常數(shù)據成員。變量或對象被 const修飾后其值不能被更新。因此被const修飾的變量或對象必須要進行初始化
    2013-10-10
  • C語言實現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    C語言實現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    這篇文章主要介紹了C語言實現(xiàn)一個文件版動態(tài)通訊錄流程,希望大家能從這篇文章中收獲到許多,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • C數(shù)據結構之雙鏈表詳細示例分析

    C數(shù)據結構之雙鏈表詳細示例分析

    以下是對c語言中的雙鏈表進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C語言實現(xiàn)日期和時間處理的常用函數(shù)總結

    C語言實現(xiàn)日期和時間處理的常用函數(shù)總結

    在C語言中,時間和日期處理是一項非?;A的技能,也是開發(fā)實際應用程序時經常會用到的功能,本文為大家總結了C語言中一些常用的時間庫函數(shù),希望對大家有所幫助
    2023-06-06

最新評論

六盘水市| 荣昌县| 南溪县| 扎赉特旗| 齐齐哈尔市| 江永县| 美姑县| 攀枝花市| 三门峡市| 阜阳市| 天门市| 满洲里市| 白银市| 崇信县| 乐昌市| 延边| 许昌县| 吴川市| 金川县| 建瓯市| 阿合奇县| 集安市| 浑源县| 重庆市| 台山市| 义乌市| 鹰潭市| 丰城市| 韩城市| 大宁县| 禄丰县| 洛隆县| 贺州市| 沙河市| 商丘市| 婺源县| 红桥区| 建湖县| 葫芦岛市| 屏山县| 福建省|