/*
* @description:
* @author: szq
* @github:
* @date: 2020-08-18 16:11:29
* @lasteditors: szq
* @lastedittime: 2020-08-18 16:16:51
* @filepath: \cpp\src\test.cpp
*/#include
#include
using
namespace std;
intmain()
;int
&num = nums[0]
; cout <<
"引用修改前nums[0] = "
<< nums[0]
<< endl;
cout <<
"引用修改前引用num = "
<< num << endl;
num =2;
cout <<
"引用修改後nums[0] = "
<< nums[0]
<< endl;
cout <<
"引用修改後引用num = "
<< num << endl;
}
執行後結果為:
從上面的結果使用引用來修改vector中的值確實可以成功。但是這種情況是發生在vector儲存空間沒有發生改變的情況下,如果在儲存空間發生改變的情況下就會出現問題。如下:
/*
* @description:
* @author: szq
* @github:
* @date: 2020-08-18 16:11:29
* @lasteditors: szq
* @lastedittime: 2020-08-18 16:16:51
* @filepath: \cpp\src\test.cpp
*/#include
#include
using
namespace std;
intmain()
;int
&num = nums[0]
; cout <<
"引用修改前nums[0] = "
<< nums[0]
<< endl;
cout <<
"引用修改前引用num = "
<< num << endl;
num =2;
nums.
push_back(4
);cout <<
"引用修改後nums[0] = "
<< nums[0]
<< endl;
cout <<
"引用修改後引用num = "
<< num << endl;
}
執行結果為:
從上面可以看出使用push_back後引用的物件不對。這是因為在使用push_back後引起了vector的擴容,它會重新分配乙個更大的記憶體,然後將原來vector中的元素拷貝過去,最後會釋放掉原來vector的記憶體。這就導致了原來引用指向的物件被銷毀,引用指定的物件不明確。
C 之vector中元素刪除
今天在刪除vector中的元素中遇到乙個問題,這裡記錄下來以便以後查閱。預備知識 用到了erase 函式,對於乙個容器c來說,假設迭代器為p,那麼執行 c.erase p 之後就刪除了容器c中p所指向的元素,並且返回乙個迭代器,返回的迭代器指向剛才所刪除元素後面的乙個元素 這裡是關鍵 有了上面的知識...
結構體中元素引用 「 「 與 「 「
自從了解結構體這個型別後,相信有不少人和我一樣對於 和 何時使用哪個來引用目標結構體中元素感到混淆,今天還是把他寫下來,以後再忘了自己也可以來看看。首先我們宣告乙個結構體。typedef structparksystem 接下來在main函式中直接建立結構體變數,parksystem p parks...
inline block中居中元素
luo 有這樣乙個父元素,被顯示為inline block元素,那問題是,如何居中裡面的元素呢?先看看父元素的樣式 a設定了元素內居中,這個設定只會水平居中,下面進行垂直居中 a before b注意到了嗎?我們使用的是vertical align屬性,設定成middle。但是問題來了,僅僅設定成這...