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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list

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

1. 特殊的forward_list

單向鏈表的刪除操作,真正刪除的是某個元素后面的值(想想是為什么?)

操作定義
lst.before_begin()返回指向鏈表首元素之前不存在的元素的迭代器,此迭代器不能解引用。
lst.cbefore_begin()同上,但是返回的是常量迭代器。
lst.insert_after(p, t)在迭代器p之后插入元素。t是一個對象
lst.insert_after(p, n, t)在迭代器p之后插入元素。t是一個對象,n是數(shù)量。若n是0則函數(shù)行為未定義
lst.insert_after(p, b, e)在迭代器p之后插入元素。由迭代器b和e指定范圍。
lst.insert_after(p, il)在迭代器p之后插入元素。由il指定初始化列表。
emplace_after(p, args)使用args在p之后的位置,創(chuàng)建一個元素,返回一個指向這個新元素的迭代器。若p為尾后迭代器,則函數(shù)行為未定義。
lst.erase_after§刪除p指向位置之后的元素,返回一個指向被刪元素之后的元素的迭代器,若p指向lst的尾元素或者是一個尾后迭代器,則函數(shù)行為未定義。
lst.erase_after(b, e)類似上面,刪除對象換成從b到e指定的范圍。

eg. 如下輸出為2468

forward_list<int> vi = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };auto prev = vi.before_begin();auto curr = vi.begin();while (curr != vi.end()){if (*curr % 2){curr = vi.erase_after(prev);}else {prev = curr;curr++;}}auto curr2 = vi.begin();while (curr2 != vi.end()) {cout << *curr2;curr2++;}

2. 改變大小

c.resize(n) 調(diào)整c的大小為n個元素,若n<c.size(),則多出的元素被丟棄。若必須添加新元素,對新元素進行值初始化
c.resize(n, t) 調(diào)整c的大小為n個元素,任何新添加的元素都初始化為值t

【引用】

  • 代碼 https://github.com/thefistlei/cplusprimer/blob/main/cprimer/cprimer/orderContainer.h
  • 總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。