c STL的一點點分享(一)

2021-08-20 13:32:50 字數 1202 閱讀 7110

如果有什麼不對的地方,請各位大佬及時提出。

1、vector(向量容器)

底層實現:

vector底層是乙個以2倍方式增長的動態開闢的一維陣列,它的初始大小是零,所以當你第一次插入的時候,它的變化是從0-》1,然後是從2-4-8-16。。。由於它的開闢效率不高,所以庫里提供了reserve()方法和resize()方法。

提供的方法:

push_back();

尾插,pop_back();尾刪

insert(it);迭代器

earse(it);

迭代器失效問題?

在用迭代器insert ears時沒有給it重新賦值就會面臨這個問題。

2、deque(雙端佇列)

底層實現:

deque底層是乙個動態開闢的二維陣列,在我的vs2012上它的一維預設開闢大小是8,二維是4個位元組。它的增長方式是先增長二維,再增長一維。

_std_begin

// deque parameters

#define _dequemapsiz 8 /* minimum map size, at least 1 */

#define _dequesiz (sizeof (value_type) <= 1 ? 16 \

: sizeof (value_type) <= 2 ? 8 \

: sizeof (value_type) <= 4 ? 4 \

: sizeof (value_type) <= 8 ? 2 \

提供的方法:

push_back(); 頭 插 

push_front();頭插

pop_front();尾插

pop_back();尾刪

insert();迭代器插入

earse();迭代器刪除

swap();容器交換

3.list(雙向鍊錶)

底層實現:底層是乙個帶頭結點的雙向鍊錶。

提供的方法:

push_back();尾插     o(1)·

push_front();頭插    o(1)

pop_front();頭刪     o(1)

pop_back();尾刪     o(1)

insert();任意插入 先找在插 o(n) 

earse();先找再刪除  o(n)     

splice();切片方法,不涉及物件的拷貝和析構,非常高效。

網域名稱註冊經歷的一點點分享

一次偶然機會,看了一下新建乙個vps例項的 發現最低價的配置,沒有ip4了 所幸我的還是ip4 只能使用ipv6。2001 0db8 85a3 08d3 1319 8a2e 0370 7344這樣的ip位址,又長又難記憶。如果有個網域名稱那不就簡單記憶了嘛。根據我個人的需求,主要有三點 方便好記,c...

深度學習的一點點一點點知識

我們手裡有大量的x和y,求權重訓練的是權重資料樣本 xwy 身高0體重0 血型0.3 腳指頭0.8 一組x計算出對應的乙個y 計算過程是w 下面的就是最基礎的公式 我們已知資料是大量的x和y 希望通過 西塔 來獲得w 我們的學習才剛剛開始,首先需要理解的是與門 x1x2y0 0001 0100 11...

一點點感想

寫在這喧囂與寂寞的世界 今天我與chen在風初停的早上跑去借書,借了安妮的 清醒記 兩本三毛的書和一本yilan的旅行與味蕾的書。從圖書館出來,風似乎有些冷,想到又要到那陰冷的梅花館坐在又涼又硬的椅子上上一節乏味的數學課我們便都不約而同的想到了逃課。帶著心裡的負罪感我們躲進八食取暖。無意中我們嘗到了...