日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值

發布時間:2025/3/21 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 容器對象的構造和賦值
1.1 構造

C c;
C c; //默認構造函數
C c1(c2)
C c1=c2;
C c{a,b,c,…}
C c={a,b,c,…}
C c(b,e)//eg. list slist(svec.begin(),svec.end());

C seq(n) // n個值初始化,只適用于順序容器,必須給出默認構造函數
seq包含n個元素,這些元素進行了值初始化;此構造函數是explicit(string不適用)
C seq(n, t)//n個t 只適用于順序容器,可以不給,但要給出 T(t)構造函數。

eg. list<string> slist(10, "");

注:創建一個容器時

  • 傳遞參數為另一個容器的拷貝,兩個容器的類型以及元素類型必須相同。
  • 傳遞參數為另一個容器的范圍拷貝,則不一定相同,而且嚴肅類型可以不同,但要能轉化。
list<string> slist(svec.begin(),svec.end()); vector<const char*> articles = {"a", "b"}; //列表初始化 vector<string> words(articles );//error vector<string> words(slist);//okchar *word []={"hello","world","buck","mulling","plump"}; list<string> word2(words,words+2);//ok

1.2 賦值

c1=c2
c1={a,b,c,…}

1.3 特殊 array的構造和賦值

使用array類型,必須同時指定元素類型和大小

array<int, 10>::size_type i;//ok array<int>::size_type i;//error

array可使用數組進行copy、對象賦值,不能直接數組賦值

array<int, 10> digits = {0,1}; array<int, 10> digits2 = digits ; //ok digits ={2,2};//error

3. swap和assign

swap(c1, c2);
c1.swap(c2);

seq.assign(b, e) 將seq中的元素替換為迭代器b和e所表示的范圍中的元素,迭代器b和e不能指向seq自己
seq.assign(i1) 將seq中的元素替換為初始化列表i1中的元素
seq.assign(n, t) 將seq中的元素替換為n個值為t的元素

3.1 swap

. swap不對元素進行copy、delete、insert操作,時間很短(只是改變容器的指針,v1的指針指向的元素值不變,但是v1的指針已經屬于v2容器了)
. swap 兩個array會真正交換元素
eg.

vector<int> v1 = { 1,2,3 }; vector<int> v2 = { 4,5,6,7,8,9 }; swap(v1, v2); //swap后v1 = { 4,5,6,7,8,9 };v2 ={ 1,2,3 };

3.2 assign

assign操作不適用于關聯容器和array
eg.

vector<const char*> articles = {"a", "b"}; //列表初始化 vector<string> words; words.assign(articles.begin(), articles.end());

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。