vector逆向迭代器

2021-10-24 14:46:30 字數 976 閱讀 8175

#include

using

namespace std;

#include

#include

intmain()

cout <<

"v1:"

<< endl;

vector<

int> v1;

//簡單理解v.begin()與v.rbegin()的區別:乙個將vector陣列的前面當作頭,乙個將vector陣列的後面當作頭。

//於是。如果頭指標要訪問後面的元素,當然是++。而不是--。

//同理:v.end()與v.rend()的區別:乙個將vector陣列的後面當作尾,乙個將vector陣列的前面當作尾。

v1.assign

(v.rbegin()

, v.

rend()

);//將v中的元素逆序放入v1。將後邊當作頭,前邊當做尾,然後放入。

cout <<

"v1的capacity:"

<< v1.

capacity()

<< endl;

cout <<

"v1的size:"

<< v1.

size()

<< endl;

for(

auto it = v1.

begin()

; it != v1.

end(

); it ++

) vector<

int>

::reverse_iterator head = v1.

rend()

-1;//vector陣列的前面當作尾。要訪問後面的,需要--

cout <<

*head << endl;

//4 3 2 1 則v1.rend()-1;指向4

system

("pause");

}

逆向迭代器 reverse iterator

對於逆向迭代器,很重要的一點是需要弄清楚邏輯位置和實際位置二者的區別。下圖顯示了逆向迭代器的位置和所指的數值 可以發現,逆向迭代器所指位置 實際位置 和所代表的的數值 邏輯位置或數值 是不同的。c 這麼做是有其原因的。導致這個行為的原因是區間的半開性。為了能夠制定容器內的所有元素,我們必須運用最後乙...

Vector 迭代器 陣列

標準庫型別vector表示物件的集合,其中所有的物件型別都相同 集合中每個物件都有乙個與之對應的索引,索引用於訪問物件。vector是乙個類模板,是模板而非型別。1.初始化vector物件 vectorv1 t型別空vector,執行預設初始化 vectorv2 v1 v2包含所有v1元素的副本 v...

vector迭代器失效

c 面試題經常會背問到vector和list的區別,其中就有乙個問題就困擾我們的,面試官說vector在進行插入和刪除元素的時候迭代器會失效,list不會,那這邊由我來給大家舉個列子 include include using namespace std int main include inclu...