關於STL 向量的乙個問題

2024-12-29 16:55:14 字數 4756 閱讀 9491

1樓:網友

for( intarray::iterator itor=;itor!=;

if( 2 ==itor )

itor );刪除元素的時候指標不移位。

else itor++;

不對吧 如 者: _鈊_煩_薏亂 - 一派掌門 十二級 5-19 21:55 所說 插入或刪除後 iterator會失效 不只是指標移位的問題 我認為不如新構建乙個vector複製元素過去更簡單。

vectornewarray; /我不喜歡你的宣告方式。

for(int i=0;i<;i++)int型別雖然不規範 但沒錯。

if(array[i]!=2) ;

2樓:花式碼農

當然不能這麼刪除,一旦發生了插入或者刪除等動作的時候,迭代器會失效。

這麼刪除: remove( ,2),包含標頭檔案#include

c++ stl裡的向量vector非常好用,那麼它是怎麼實現的呢

3樓:

這個要去翻原始碼了,stl裡的**說實話,真的看不太懂。

如果不是太糾結於具體細節,可以簡單講講基本的實現思路,大致如下:

vector從功能上來講,屬於順序儲存容器,所以底層實現一般基於陣列。

vector使用模板超程式設計技術實現,具體一點就是編譯器根據使用時指定的實際型別在編譯時執行模板特化,編譯出對應的**。也就是說vectorv1; vectorv2;它們各對應乙個特化版本的**。這提高了**的抽象級別,但是對帶來了**膨脹的問題。

vector的重要特性之一就是實現了陣列的動態遞增。簡單來說就是容器內部記錄當前的足最大容量和使用量。當新增元素的時候,如果容器類發現當前的容量已耗盡,容器類會自動地重新分配乙個更大容量的陣列,把當前的所有元素copy過去,然後釋放掉舊的陣列,從而實現動態自增,這一切對使用者來說完全透明。

vector提供迭代器來提供統一的遍歷訪問介面,方便與stl中的其它元件進行互動。

這其中會有很多的細節,比如:

1. 是否允許vector在必要時縮小自身容量?

2. vector容量耗盡後的遞增量是多少?

3. 是否應該提供執行緒安全容器?

有些東西可能真的需要去翻原始碼去看才能搞明白。或者可以參考侯捷的《stl原始碼剖析》。其實vector本身的實現並不會太複雜,它的實現思路也很簡單,但是設計層面的一些取捨就需要經過仔細考量了。

一般來說,stl是乙個足夠堅實的後盾,我們會頻繁地使用它,以構建健壯高效的軟體。能夠理解stl裡的一些設計思想和實現方式,對提高我們的程式設計思維和程式設計能力會所幫助。

4樓:網友

用類和模板技術實現的。

關於c++中的二維向量

5樓:網友

二維向量只是等於兩個一位陣列。

二維陣列a[n,m]是乙個n*m的表。等於n個一維陣列。 當n = 2時。表示二維向量。

如二維陣列 : int a[100][100].

二維向量 : int a[2][100].

由於二維向量被二維陣列包含,所以二維向量也是像二維陣列那樣是用下標了確定元素位址。

二維向量和二維陣列相同之處:陣列名都是二級指標。

和不同之處: 二維向量其二維性規定了第乙個下標一定是2個寬度。

同理三維向量規定了第乙個下標一定是3個寬度。

同理n維向量規定了第乙個下標一定是n個寬度。

所以陣列 int a[n][m]. 是乙個n維向量。 當n=2是他就被特殊化為二維。

要輸出二維向量的某個元素,跟一般二維陣列定址就行了。

額外的問個問題:

相信我,背**是背不住的。你在看書時一定要不時地動手在電腦上寫寫**。只要你的**寫得多,你以後在看書的時候就可以由書本的文字描述在自己的腦海裡產生自己的解決演算法和**。。。

我是過來人,苦口婆心。信不信由你。

6樓:網友

c++沒有這個語言特性吧,這是你書上自己寫的例子吧?一維向量你是指vector嗎?這個屬於stl範疇了,若你還在語言入門階段的話可以不學習stl,畢竟stl對c++語言的掌握和資料結構要有一定認識,先不學習它是正確的,語言基礎學習好之後再單獨買本stl的書來學習就好了。

資料結構裡面的向量是什麼結構?

7樓:不是苦瓜是什麼

向量資料亦稱「向量資料」。電子計算機中表示地理空間資料的一種資料結構。它用一系列定義起始點和終止點的線段和它們之間的連線關係來反映地理物件的空間分佈。

通過記錄線段端點的座標,向量資料結構能更精確地反映地理事物的位置、長度和麵積。空間點實體在向量資料中表示為一對座標;線實體表示為一串座標;面實體也表示為一串座標,並且首尾點重合。

線性表、棧、隊、串都屬於線性結構,而線性表根據不同的儲存結構又可分為順序表和連結串列。

向量一般以陣列實現,可能用定長陣列實現,存放元素個數有限制,也可能用動態長度陣列實現,一旦元素裝滿後會再次申請更大的空間並將原有資料拷貝過去,c++stl中的vector就是後一種。

向量的記法:印刷體記作黑體(粗體)的字母(如a、b、u、v),書寫時在字母頂上加一小箭頭「→」如果給定向量的起點(a)和終點(b),可將向量記作ab(並於頂上加→)。

在空間直角座標系中,也能把向量以數對形式表示,例如xoy平面中(2,3)是一向量。

8樓:網友

向量就是順序表,一般以陣列實現,可能用定長陣列實現,存放元素個數有限制,也可能用動態長度陣列實現,一旦元素裝滿後會再次申請更大的空間並將原有資料拷貝過去,c++stl中的vector就是後一種。

9樓:三個月的努力

線性表、棧、隊、串。

都屬於線性結構。

而線性表根據不同的儲存結構又可分為順序表和連結串列。

你所提到的向量(vector)應該是指嚴書裡的「順序表」,採用順序儲存。

在c++ stl裡面,一般採用「動態陣列」實現vector。

10樓:網友

向量,stl(全球頂尖級高手寫的資料結構的**)標準模板庫裡的東西。

說白了,向量就是乙個連結串列。當然,其擴充套件性、實用性遠遠高於我們平常使用的連結串列。樓主可以在程式裡#include ,然後就如vector內部檢視向量的定義,對學習資料結構幫助很大哦。

11樓:匿名使用者

而是非,粉而是馮紹峰額色粉額非,而是分手的執行緒想v虛心。

stl中的演算法是對所有容器都適用嗎

12樓:

c++ stl 標準模板庫 c++容器類vector . 向量凳迅容器deque 雙端佇列容器list 雙向連結串列容器slist 單向連結串列容器bit_vector 位向量容器set 集合容器multiset 多重集合容器map 映照容器multimap 多重映照容器hash_set 雜湊集合容器hash_map 雜湊映照容器string 基本字元序列容器stack 堆疊容器queue 佇列容器priority_queue 優先佇列容器 c++stl 演算法 逐個容器元素 for_each查詢容器元素 find 條件查詢 find_if鄰近查詢容器 adjacent_find範圍查詢容器元素 find_first_of統計等於棗碰此某值的容器元吵前素個數 count條件統計 count_if..這裡還有很多很多 演算法 其中比較有用的sort 排序stable_sort 穩定排序反向元素 reverse旋轉 rotate

[c++ stl]這個向量迭代器問題,實在受不了了,程式簡單,刪除所有匹配的元素

13樓:帳號已登出

你在刪除itorb之前,做了itora++;運算,但是在刪除itorb之後,itora就失效了,現在的itora指向了原來的下乙個位置。雖然在後來又做了itora--;運算,但是在if外面又有一次itora++;所以你現在已經把第二個6也跳過去了。

你如果要堅持自己刪除的話,不用這麼麻煩:

for(;itora != ;

if(6 == *itora)

print(array);

elseitora++;

之後,itora的值沒變,但是因為後面所有的元素都往前移了乙個位置,所以相當於itora自動做了一次++運算。

注意:對list就不能這麼做了。

14樓:網友

erase 後 指標就已經改變。

所以 在erase 就應該 將 itora =

15樓:網友

vector::iterator it;

for(vector::const_iterator it = ;it!=;it++)

這句就有毛病了 it重複定義了。

還有函式沒有return啊。

向量反向共線

16樓:你大爺

解:因為向量a=(k,1),b=(4,k),a與b共線所以k*k-1*4=0

那麼k=2或k=-2

又k=2時向量a=(2,1),b=(4,2)同向,所以不符合故k=-2

c++向量和連結串列的優缺點

17樓:網友

向量連續儲存支援下標訪問,隨機訪問修改快,中部增刪效率低。

連結串列分散儲存,記憶體利用率高,中部增刪快捷,隨機查詢慢,

18樓:網友

向量支援隨機讀取和更改 查詢一般 末端刪除快 隨機刪除慢。

連結串列不支援隨機讀取和更改 查詢慢 元素較多時刪除時間大約是查詢時間。

一個關於地理的問題,關於地理問題

不明白樓主意思。熱帶雨林氣候 全年高溫多雨。全年高溫多雨不就式熱帶雨林氣候的特徵嗎。一個是氣候型別,一個是氣候特點。地理的問題 摘要。而顆粒較小的顆粒會較後地進行沉積。您好,很高興為您服務,請問您可以給我看看地圖嗎 您好,可以將題目發過來給我看看嘛。您好,a的話看起來應該是衝擊平原。然後呢。您好,然...

關於愛情問題,關於一個愛情問題

相愛的人不bai會因為一du 句分手而結束,更不會因為一個zhi錯誤而真的做到一dao次不忠回百次不容。相愛的人會答在感情的曲折裡一起成長。只要經過一個曲折熬了過去愛就又增長了點,又一個曲折熬了過去大家學會珍惜對方一點。一路下去愛越來越深,只會深深的相愛著,懂得對方的好,不會再分開。其實你bai是喜...

關於學習的問題一個關於學習的問題

多想多做 認真總結 我是師範大學 學數學的 以後可能會當數學老師 我在高中時的數學很好 總結了很多經驗 有時間可以和我聯絡 我們可以進行溝通 我想 我應該能幫你 關於數學 是一種有別於文科不需要死記硬背的靈活科目所以只要把經典的型別題做會再變通一下就ok了語文嘛 有沒有發現每次考試課本內的知識考的很...